mirror of
https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git
synced 2025-08-14 00:25:46 +02:00
39 lines
1.2 KiB
Python
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 |