AI_Detector / src /middleware /request_logging.py
Tany Nguyen
Init repo
1182571
Raw History Blame Contribute Delete
1.11 kB
"""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