Refactor RequestLoggingMiddleware to ensure proper logging of request and response details, including error handling during request processing

This commit is contained in:
vvzvlad
2025-03-22 14:54:05 +03:00
parent f5f80487ce
commit d6df00ff8c
+17 -20
View File
@@ -23,8 +23,21 @@ from post_parser import PostParser
from url_signer import verify_media_digest
from starlette.middleware.base import BaseHTTPMiddleware
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
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
@@ -52,7 +65,7 @@ async def lifespan(_: FastAPI):
pass
await client.stop()
app = FastAPI( title="Pyrogram Bridge", lifespan=lifespan)
app = FastAPI(title="Pyrogram Bridge", lifespan=lifespan)
app.add_middleware(RequestLoggingMiddleware)
def mask_sensitive_value(input_str: str) -> str:
@@ -608,20 +621,4 @@ async def get_rss_feed(channel: str,
except Exception as e:
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
raise HTTPException(status_code=500, detail=error_message) from e