1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00
Files
AdministrationItDepartmens/backend/app/middleware/logging.py
2024-12-28 05:32:33 +06:00

39 lines
1.2 KiB
Python

"""Logging middleware for request/response tracking"""
import time
from fastapi import Request
from starlette.middleware.base import BaseHTTPMiddleware
import logging
logger = logging.getLogger("app.access")
class LoggingMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
start_time = time.time()
# Log request
logger.info(
"Request started",
extra={
"client_addr": request.client.host,
"request_line": f"{request.method} {request.url.path}",
"status_code": "PENDING"
}
)
response = await call_next(request)
# Calculate processing time
process_time = time.time() - start_time
# Log response
logger.info(
"Request completed",
extra={
"client_addr": request.client.host,
"request_line": f"{request.method} {request.url.path}",
"status_code": response.status_code,
"process_time": f"{process_time:.2f}s"
}
)
return response