24 lines
686 B
Python
24 lines
686 B
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
PerToolBox Server - 日志中间件
|
|
Copyright (C) 2024 Sea Network Technology Studio
|
|
Author: Canglan <admin@sea-studio.top>
|
|
License: AGPL v3
|
|
"""
|
|
|
|
import time
|
|
from fastapi import Request
|
|
from ..utils.logger import logger
|
|
|
|
async def log_requests(request: Request, call_next):
|
|
start_time = time.time()
|
|
logger.info(f"→ {request.method} {request.url.path}")
|
|
|
|
response = await call_next(request)
|
|
|
|
process_time = time.time() - start_time
|
|
logger.info(f"← {request.method} {request.url.path} - {response.status_code} - {process_time:.3f}s")
|
|
|
|
response.headers["X-Process-Time"] = str(process_time)
|
|
return response |