Initial commit: Add maimaiDX API web application with AimeDB scanning and logging features
This commit is contained in:
84
backend/APILogger.py
Normal file
84
backend/APILogger.py
Normal file
@@ -0,0 +1,84 @@
|
||||
import os
|
||||
import json
|
||||
from datetime import datetime
|
||||
from loguru import logger
|
||||
|
||||
|
||||
class APILogger:
|
||||
def __init__(self, log_dir="logs"):
|
||||
self.log_dir = log_dir
|
||||
self._setup_logging()
|
||||
|
||||
def _setup_logging(self):
|
||||
"""设置日志配置"""
|
||||
# 创建日志目录(如果不存在)
|
||||
if not os.path.exists(self.log_dir):
|
||||
os.makedirs(self.log_dir)
|
||||
|
||||
# 配置loguru
|
||||
logger.add(
|
||||
f"{self.log_dir}/app_{{time}}.log",
|
||||
rotation="100 MB",
|
||||
retention="30 days",
|
||||
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}"
|
||||
)
|
||||
logger.add(
|
||||
f"{self.log_dir}/error_{{time}}.log",
|
||||
level="ERROR",
|
||||
rotation="100 MB",
|
||||
retention="90 days",
|
||||
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}"
|
||||
)
|
||||
|
||||
def log_request(self, method, url, headers, body=None):
|
||||
"""记录API请求"""
|
||||
log_data = {
|
||||
"type": "request",
|
||||
"method": method,
|
||||
"url": str(url),
|
||||
"headers": dict(headers),
|
||||
"timestamp": datetime.now().isoformat()
|
||||
}
|
||||
|
||||
if body:
|
||||
log_data["body"] = body
|
||||
|
||||
logger.info(f"API Request: {json.dumps(log_data, ensure_ascii=False)}")
|
||||
|
||||
def log_response(self, status_code, response_data, process_time=None):
|
||||
"""记录API响应"""
|
||||
log_data = {
|
||||
"type": "response",
|
||||
"status_code": status_code,
|
||||
"response_data": response_data,
|
||||
"process_time": process_time,
|
||||
"timestamp": datetime.now().isoformat()
|
||||
}
|
||||
|
||||
if status_code >= 400:
|
||||
logger.error(f"API Response: {json.dumps(log_data, ensure_ascii=False)}")
|
||||
else:
|
||||
logger.info(f"API Response: {json.dumps(log_data, ensure_ascii=False)}")
|
||||
|
||||
def log_error(self, error_msg, error_details=None):
|
||||
"""记录错误"""
|
||||
log_data = {
|
||||
"type": "error",
|
||||
"error_msg": error_msg,
|
||||
"error_details": error_details,
|
||||
"timestamp": datetime.now().isoformat()
|
||||
}
|
||||
|
||||
logger.error(f"API Error: {json.dumps(log_data, ensure_ascii=False)}")
|
||||
|
||||
def log_info(self, message):
|
||||
"""记录信息"""
|
||||
logger.info(message)
|
||||
|
||||
def log_warning(self, message):
|
||||
"""记录警告"""
|
||||
logger.warning(message)
|
||||
|
||||
|
||||
# 创建全局日志实例
|
||||
api_logger = APILogger()
|
||||
Reference in New Issue
Block a user