""" Logging middleware for gateway """ import logging import time from fastapi import Request import json logger = logging.getLogger(__name__) async def logging_middleware(request: Request, call_next): """Logging middleware""" start_time = time.time() # Log request logger.info( f"Request: {request.method} {request.url.path}", extra={ "method": request.method, "url": request.url.path, "query_params": str(request.query_params), "client_host": request.client.host, "user_agent": request.headers.get("user-agent", ""), "request_id": getattr(request.state, 'request_id', None) } ) # Process request response = await call_next(request) # Calculate duration duration = time.time() - start_time # Log response logger.info( f"Response: {response.status_code} in {duration:.3f}s", extra={ "status_code": response.status_code, "duration": duration, "method": request.method, "url": request.url.path, "request_id": getattr(request.state, 'request_id', None) } ) return response