redrob-ranker / src /api /middleware /logging.py
MrNK2107
feat: final smoke-test fixes + spectacular README + UI bugfixes
25bfed8
Raw
History Blame Contribute Delete
682 Bytes
from __future__ import annotations
import logging
import time
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.requests import Request
from starlette.responses import Response
logger = logging.getLogger("api.access")
class RequestLoggingMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next) -> Response:
start = time.time()
response = await call_next(request)
duration = (time.time() - start) * 1000
logger.info(
f"{request.method} {request.url.path} "
f"status={response.status_code} "
f"duration={duration:.1f}ms"
)
return response