"""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"]