| 1234567891011121314151617181920212223242526272829303132 |
- """日志配置 —— 统一日志格式、级别与输出目标."""
- from __future__ import annotations
- import logging
- import sys
- def _normalize_level(level: str | int | None) -> int:
- if level is None:
- return logging.INFO
- if isinstance(level, int):
- return level
- s = str(level).strip().upper()
- return getattr(logging, s, logging.INFO)
- def configure_logging(level: str | int | None = None) -> None:
- lvl = _normalize_level(level)
- app_root = logging.getLogger("app")
- app_root.setLevel(lvl)
- if not app_root.handlers:
- h = logging.StreamHandler(sys.stderr)
- h.setLevel(lvl)
- h.setFormatter(
- logging.Formatter("%(levelname)s: %(name)s: %(message)s")
- )
- app_root.addHandler(h)
- app_root.propagate = False
- logging.getLogger(__name__).setLevel(lvl)
|