Initial commit: Add maimaiDX API web application with AimeDB scanning and logging features

This commit is contained in:
kejiz
2025-09-18 10:19:08 +08:00
commit 4e83f159f0
84 changed files with 14012 additions and 0 deletions

84
backend/APILogger.py Normal file
View 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()