优化日志与启动调试脚本

This commit is contained in:
yml2213
2026-08-12 16:29:37 +08:00
parent d19c0902f2
commit 03f5b8a6c4
2 changed files with 59 additions and 21 deletions
+27
View File
@@ -2,7 +2,9 @@
import os
import sys
import logging
from datetime import date
from logging.handlers import TimedRotatingFileHandler
from pathlib import Path
from loguru import logger
@@ -24,6 +26,30 @@ def _should_rotate(message, file):
return False
def _configure_standard_logging(level: str, log_dir: Path) -> None:
"""将 Uvicorn/FastAPI 的标准日志同步到控制台和文件。"""
log_level = getattr(logging, level.upper(), logging.INFO)
formatter = logging.Formatter(
"%(asctime)s | %(levelname)-8s | %(name)s | %(message)s"
)
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(log_level)
console_handler.setFormatter(formatter)
file_handler = TimedRotatingFileHandler(
log_dir / "server.log", when="midnight", backupCount=7, encoding="utf-8"
)
file_handler.setLevel(log_level)
file_handler.setFormatter(formatter)
for name in ("uvicorn", "uvicorn.error", "uvicorn.access", "fastapi", "starlette"):
standard_logger = logging.getLogger(name)
standard_logger.handlers = [console_handler, file_handler]
standard_logger.setLevel(log_level)
standard_logger.propagate = False
def setup_logger(level: str = "INFO", log_dir: str = None, log_file: str = None) -> None:
"""
配置日志
@@ -52,6 +78,7 @@ def setup_logger(level: str = "INFO", log_dir: str = None, log_file: str = None)
# 新接口:按目录 + 日期命名
dir_path = Path(log_dir)
dir_path.mkdir(parents=True, exist_ok=True)
_configure_standard_logging(level, dir_path)
file_path = str(dir_path / "app-{time:YYYY-MM-DD}.log")
elif log_file:
# 兼容旧接口