| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- """日志初始化工具。"""
- from __future__ import annotations
- import logging
- import os
- from datetime import datetime
- from pathlib import Path
- _FILE_HANDLER_FLAG = "_yibiao_file_logging_enabled"
- def _backend_dir() -> Path:
- return Path(__file__).resolve().parents[2]
- def setup_logging(enable_file_logging: bool) -> None:
- """初始化通用日志配置。"""
- if not enable_file_logging:
- return
- root_logger = logging.getLogger()
- if getattr(root_logger, _FILE_HANDLER_FLAG, False):
- return
- logs_dir = _backend_dir() / "logs"
- logs_dir.mkdir(parents=True, exist_ok=True)
- file_name = f"app-{datetime.now():%Y%m%d}-{os.getpid()}.log"
- file_handler = logging.FileHandler(logs_dir / file_name, encoding="utf-8")
- file_handler.setLevel(logging.DEBUG)
- file_handler.setFormatter(
- logging.Formatter(
- "%(asctime)s [%(levelname)s] %(name)s: %(message)s",
- datefmt="%Y-%m-%d %H:%M:%S",
- )
- )
- root_logger.setLevel(logging.DEBUG)
- root_logger.addHandler(file_handler)
- setattr(root_logger, _FILE_HANDLER_FLAG, True)
|