16 lines
554 B
Python
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
|
|
|
|
|