| 1234567891011121314151617181920212223242526272829303132333435363738 |
- """Project level logger helper."""
- from __future__ import annotations
- import logging
- from logging.handlers import RotatingFileHandler
- from pathlib import Path
- from typing import Dict
- from app.const import LOG_ROOT
- class _Logger:
- def __init__(self) -> None:
- LOG_ROOT.mkdir(parents=True, exist_ok=True)
- log_path = LOG_ROOT / "qa_pair.log"
- self._logger = logging.getLogger("qa_pair")
- if not self._logger.handlers:
- self._logger.setLevel(logging.INFO)
- handler = RotatingFileHandler(log_path, maxBytes=5_000_000, backupCount=2, encoding="utf-8")
- formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
- handler.setFormatter(formatter)
- self._logger.addHandler(handler)
- self._level_map: Dict[str, int] = {
- "DEBUG": logging.DEBUG,
- "INFO": logging.INFO,
- "WARN": logging.WARNING,
- "ERROR": logging.ERROR,
- }
- def log(self, message: str, level: str = "INFO") -> None:
- lvl = self._level_map.get(level.upper(), logging.INFO)
- self._logger.log(lvl, message)
- logger = _Logger()
- __all__ = ["logger"]
|