gridops-ai / api /middleware.py
Aadithya
7 nodes implementation done
5365a92
Raw
History Blame Contribute Delete
874 Bytes
"""Middleware definitions for the FastAPI application."""
import sys
import time
from loguru import logger
from fastapi import Request
# Configure loguru — structured JSON logs in production
logger.remove()
logger.add(
sys.stdout,
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {name}:{function}:{line} | {message}",
level="INFO",
colorize=True,
)
logger.add(
"logs/gridops.log",
rotation="10 MB",
retention="7 days",
compression="zip",
level="DEBUG",
)
async def log_requests(request: Request, call_next):
"""Log the request method, path, status code, and duration."""
start = time.perf_counter()
response = await call_next(request)
duration = (time.perf_counter() - start) * 1000
logger.info(
f"{request.method} {request.url.path}{response.status_code} ({duration:.1f}ms)"
)
return response