16 lines
554 B
Python

from datetime import datetime, timezone
from typing import Callable
from starlette.requests import Request
from starlette.responses import Response
async def request_logging_middleware(request: Request, call_next: Callable) -> Response:
timestamp = datetime.now(timezone.utc).astimezone()
response: Response = await call_next(request)
print(f"{timestamp.isoformat()} {request.method} {request.url.path} {response.status_code} {response.headers.get("content-length")} \"{request.headers.get("user-agent") or '-'}\"")
return response