redrob-ranker / src /api /middleware /logging.py
Venkat7123's picture
Deploy candidate ranker
37b0787
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