logging_setup.py
1.01 KB
"""Configure dedicated eval run logs under repo ``logs/`` (see ``constants.EVAL_*_LOG_*``)."""
from __future__ import annotations
import logging
import sys
from .constants import EVAL_LOG_DIR, EVAL_LOG_FILE, EVAL_VERBOSE_LOG_DIR
_setup_done = False
def setup_eval_logging() -> None:
"""Attach file + stderr handlers to ``search_eval`` once; ensure log directories exist."""
global _setup_done
if _setup_done:
return
EVAL_LOG_DIR.mkdir(parents=True, exist_ok=True)
EVAL_VERBOSE_LOG_DIR.mkdir(parents=True, exist_ok=True)
fmt = logging.Formatter("%(asctime)s - %(levelname)s - %(name)s - %(message)s")
root = logging.getLogger("search_eval")
root.setLevel(logging.INFO)
if root.handlers:
_setup_done = True
return
fh = logging.FileHandler(EVAL_LOG_FILE, encoding="utf-8")
fh.setFormatter(fmt)
sh = logging.StreamHandler(sys.stderr)
sh.setFormatter(fmt)
root.addHandler(fh)
root.addHandler(sh)
root.propagate = False
_setup_done = True