AI_Detector / src /middleware /request_logging.py
Tany Nguyen
Init repo
1182571
"""Request logging middleware for timing."""
import time
import logging
from typing import Callable
from fastapi import Request, Response
from starlette.middleware.base import BaseHTTPMiddleware
logger = logging.getLogger(__name__)
class RequestLoggingMiddleware(BaseHTTPMiddleware):
"""Middleware to log request processing time."""
async def dispatch(self, request: Request, call_next: Callable) -> Response:
"""Process request with timing."""
start_time = time.time()
# Log incoming request
logger.info(f"Incoming request: {request.method} {request.url}")
# Process request
response = await call_next(request)
# Calculate processing time
process_time = time.time() - start_time
# Log processing time
logger.info(f"Request processed in {process_time:.4f}s - {request.method} {request.url} - Status: {response.status_code}")
# Add processing time to response headers
response.headers["X-Process-Time"] = str(process_time)
return response