PCM_Report/logger.py

37 lines
1.1 KiB
Python
Raw Normal View History

2025-12-11 14:32:31 +08:00
import logging
import os
from pathlib import Path
from logging.handlers import RotatingFileHandler
_LOGGER = None
def get_log_file() -> Path:
try:
tmp = Path(os.getenv("TEMP") or os.getenv("TMP") or ".")
except Exception:
tmp = Path(".")
return tmp / "docx_creator.log"
def get_logger(name: str = "docx_creator") -> logging.Logger:
global _LOGGER
if _LOGGER is not None:
return _LOGGER
logger = logging.getLogger(name)
logger.setLevel(logging.DEBUG)
log_file = get_log_file()
log_file.parent.mkdir(parents=True, exist_ok=True)
handler = RotatingFileHandler(str(log_file), maxBytes=2 * 1024 * 1024, backupCount=2, encoding="utf-8")
fmt = logging.Formatter("%(asctime)s [%(levelname)s] %(name)s: %(message)s")
handler.setFormatter(fmt)
logger.addHandler(handler)
# also log warnings+ to stderr for debugging
stream = logging.StreamHandler()
stream.setLevel(logging.WARNING)
stream.setFormatter(fmt)
logger.addHandler(stream)
_LOGGER = logger
logger.info("Logger initialized at %s", log_file)
return logger