import logging import os from pathlib import Path from datetime import datetime __all__ = ["get_review_logger"] LOG_DIR = Path(os.getenv("TMLR_LOG_DIR", "/tmp/tmlr_logs")) LOG_DIR.mkdir(exist_ok=True) def get_review_logger(review_id: str | None = None) -> logging.Logger: """Return a configured logger for a single review run. A new ``FileHandler`` is attached whose filename is based on *review_id* or a timestamp if none is given. """ name = f"tmlr_reviewer.{review_id or datetime.utcnow().strftime('%Y%m%d_%H%M%S')}" logger = logging.getLogger(name) if logger.handlers: # already configured return logger logger.setLevel(logging.INFO) # Console output stream_handler = logging.StreamHandler() stream_handler.setFormatter(logging.Formatter("[%(levelname)s] %(message)s")) logger.addHandler(stream_handler) # File output log_file = LOG_DIR / f"{name}.log" file_handler = logging.FileHandler(log_file) file_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")) logger.addHandler(file_handler) return logger