__init__.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. """Project level logger helper."""
  2. from __future__ import annotations
  3. import logging
  4. from logging.handlers import RotatingFileHandler
  5. from pathlib import Path
  6. from typing import Dict
  7. from app.const import LOG_ROOT
  8. class _Logger:
  9. def __init__(self) -> None:
  10. LOG_ROOT.mkdir(parents=True, exist_ok=True)
  11. log_path = LOG_ROOT / "qa_pair.log"
  12. self._logger = logging.getLogger("qa_pair")
  13. if not self._logger.handlers:
  14. self._logger.setLevel(logging.INFO)
  15. handler = RotatingFileHandler(log_path, maxBytes=5_000_000, backupCount=2, encoding="utf-8")
  16. formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
  17. handler.setFormatter(formatter)
  18. self._logger.addHandler(handler)
  19. self._level_map: Dict[str, int] = {
  20. "DEBUG": logging.DEBUG,
  21. "INFO": logging.INFO,
  22. "WARN": logging.WARNING,
  23. "ERROR": logging.ERROR,
  24. }
  25. def log(self, message: str, level: str = "INFO") -> None:
  26. lvl = self._level_map.get(level.upper(), logging.INFO)
  27. self._logger.log(lvl, message)
  28. logger = _Logger()
  29. __all__ = ["logger"]