mirror of
https://ghfast.top/https://github.com/aeroxw/tick-stock-panel.git
synced 2026-09-12 15:34:16 +08:00
fix(logging): 开发模式追加文件日志 backend.log
dev 模式 (uvicorn) logging.basicConfig 只有 StreamHandler, 同步/管道等 运行时日志 (daily_pipeline 的 logger.info 等) 仅出现在 dev 终端, 关掉或滚屏 后即丢失, 排查「同步后日志没落」时无处可查。 追加 RotatingFileHandler 落盘到 data/backend.log, 与桌面版 (desktop.py:_setup_logging → desktop.log) 行为对齐。frozen (桌面版) 已由 desktop.py 负责, 此处跳过避免重复落盘。RotatingFileHandler (10MB×3) 防止 长期运行/频繁 reload 导致文件无限增长。 注: 同步进度日志 (job_store JSON, 经 /api/pipeline/jobs 返回) 一直正常落盘, 本次只补应用级日志的文件落盘。
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import sys
|
||||
import threading
|
||||
from contextlib import asynccontextmanager
|
||||
from pathlib import Path
|
||||
@@ -32,6 +33,28 @@ logging.basicConfig(
|
||||
)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# 追加文件日志: uvicorn (含 --reload 开发模式) 默认只有 StreamHandler, 同步/管道等
|
||||
# 运行时日志仅出现在 dev 终端, 关掉或滚屏后即丢失, 排查「同步后日志没落」时无处可查。
|
||||
# 落盘到 data/backend.log 与桌面版 (desktop.py:_setup_logging → desktop.log) 行为对齐,
|
||||
# 事后可查。桌面版 (frozen) 已由 desktop.py 写 desktop.log, 此处跳过避免重复落盘。
|
||||
# RotatingFileHandler 防止长期运行/频繁 reload 导致文件无限增长。
|
||||
if not getattr(sys, "frozen", False):
|
||||
try:
|
||||
from logging.handlers import RotatingFileHandler
|
||||
|
||||
_log_path = settings.data_dir / "backend.log"
|
||||
_log_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
_file_handler = RotatingFileHandler(
|
||||
_log_path, maxBytes=10 * 1024 * 1024, backupCount=3,
|
||||
mode="a", encoding="utf-8", errors="replace",
|
||||
)
|
||||
_file_handler.setFormatter(
|
||||
logging.Formatter("%(asctime)s [%(levelname)s] %(name)s: %(message)s")
|
||||
)
|
||||
logging.getLogger().addHandler(_file_handler)
|
||||
except Exception as _e: # noqa: BLE001
|
||||
logger.warning("文件日志初始化失败, 仅输出到终端: %s", _e)
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI):
|
||||
|
||||
Reference in New Issue
Block a user