Spaces:
Configuration error
Configuration error
| import time | |
| from fastapi import Request, Response | |
| from starlette.middleware.base import BaseHTTPMiddleware | |
| from app.core.logging_config import get_logger | |
| logger = get_logger("app.access") | |
| class RequestLoggingMiddleware(BaseHTTPMiddleware): | |
| async def dispatch(self, request: Request, call_next) -> Response: | |
| start_ts = time.perf_counter() | |
| method = request.method | |
| path = request.url.path | |
| try: | |
| response: Response = await call_next(request) | |
| except Exception as exc: | |
| elapsed_ms = int((time.perf_counter() - start_ts) * 1000) | |
| logger.error("%s %s — %dms | error=%s", method, path, elapsed_ms, exc, exc_info=True) | |
| raise | |
| elapsed_ms = int((time.perf_counter() - start_ts) * 1000) | |
| log = logger.warning if response.status_code >= 400 else logger.info | |
| log("%s %s %d %dms", method, path, response.status_code, elapsed_ms) | |
| return response | |