Add RequestLoggingMiddleware to log request and response details in API server
This commit is contained in:
+19
-1
@@ -14,13 +14,14 @@ asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
|
||||
import magic
|
||||
from pyrogram import errors
|
||||
from starlette.background import BackgroundTask
|
||||
from fastapi import FastAPI, HTTPException, Response
|
||||
from fastapi import FastAPI, HTTPException, Response, Request
|
||||
from fastapi.responses import HTMLResponse, FileResponse
|
||||
from telegram_client import TelegramClient
|
||||
from config import get_settings
|
||||
from rss_generator import generate_channel_rss, generate_channel_html
|
||||
from post_parser import PostParser
|
||||
from url_signer import verify_media_digest
|
||||
from starlette.middleware.base import BaseHTTPMiddleware
|
||||
|
||||
|
||||
|
||||
@@ -52,6 +53,7 @@ async def lifespan(_: FastAPI):
|
||||
await client.stop()
|
||||
|
||||
app = FastAPI( title="Pyrogram Bridge", lifespan=lifespan)
|
||||
app.add_middleware(RequestLoggingMiddleware)
|
||||
|
||||
def mask_sensitive_value(input_str: str) -> str:
|
||||
"""Mask middle part of sensitive value, showing only first and last 4 characters"""
|
||||
@@ -607,3 +609,19 @@ async def get_rss_feed(channel: str,
|
||||
error_message = f"rss_generation_error: channel {channel}, error {str(e)}"
|
||||
logger.error(error_message)
|
||||
raise HTTPException(status_code=500, detail=error_message) from e
|
||||
|
||||
class RequestLoggingMiddleware(BaseHTTPMiddleware):
|
||||
async def dispatch(self, request: Request, call_next):
|
||||
# Log request details
|
||||
logger.info(f"Request: {request.method} {request.url}")
|
||||
logger.info(f"Headers: {dict(request.headers)}")
|
||||
logger.info(f"Query params: {dict(request.query_params)}")
|
||||
|
||||
try:
|
||||
response = await call_next(request)
|
||||
# Log response details
|
||||
logger.info(f"Response status: {response.status_code}")
|
||||
return response
|
||||
except Exception as e:
|
||||
logger.error(f"Request processing error: {str(e)}")
|
||||
raise
|
||||
Reference in New Issue
Block a user