from functools import wraps from fastapi import Request from app.core.logger import logger import time class RequestLogger: """请求日志中间件""" @staticmethod def log_request(f): @wraps(f) async def decorated_function(request: Request, *args, **kwargs): start_time = time.time() # 记录请求信息 logger.info(f"收到请求 - 方法: {request.method}, 路径: {request.url.path}") # 尝试获取请求体 try: body = await request.json() logger.debug(f"请求体: {body}") except: pass # 执行请求处理 response = await f(request, *args, **kwargs) # 记录响应时间 duration = time.time() - start_time logger.info(f"请求处理完成 - 耗时: {duration:.2f}秒") return response return decorated_function