Blame view

scripts/evaluation/eval_framework/logging_setup.py 1.27 KB
331861d5   tangwang   eval框架配置化
1
  """Configure dedicated eval run logs (defaults: repo ``logs/``; override via ``config.yaml`` ``search_evaluation.eval_log_dir``)."""
cdd8ee3a   tangwang   eval框架日志独立
2
3
4
5
6
  
  from __future__ import annotations
  
  import logging
  import sys
331861d5   tangwang   eval框架配置化
7
  from pathlib import Path
cdd8ee3a   tangwang   eval框架日志独立
8
  
331861d5   tangwang   eval框架配置化
9
  from .constants import EVAL_LOG_DIR
cdd8ee3a   tangwang   eval框架日志独立
10
11
12
13
  
  _setup_done = False
  
  
331861d5   tangwang   eval框架配置化
14
15
16
17
18
  def setup_eval_logging(eval_log_dir: Path | None = None) -> Path:
      """Attach file + stderr handlers to ``search_eval`` once; ensure log directories exist.
  
      Returns the path to the primary ``eval.log`` file.
      """
cdd8ee3a   tangwang   eval框架日志独立
19
      global _setup_done
331861d5   tangwang   eval框架配置化
20
21
22
      log_dir = Path(eval_log_dir).resolve() if eval_log_dir is not None else EVAL_LOG_DIR.resolve()
      verbose_dir = log_dir / "verbose"
      log_file = log_dir / "eval.log"
cdd8ee3a   tangwang   eval框架日志独立
23
  
331861d5   tangwang   eval框架配置化
24
25
      log_dir.mkdir(parents=True, exist_ok=True)
      verbose_dir.mkdir(parents=True, exist_ok=True)
cdd8ee3a   tangwang   eval框架日志独立
26
27
28
29
30
31
  
      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
331861d5   tangwang   eval框架配置化
32
33
34
          return log_file
  
      fh = logging.FileHandler(log_file, encoding="utf-8")
cdd8ee3a   tangwang   eval框架日志独立
35
36
37
38
39
40
41
      fh.setFormatter(fmt)
      sh = logging.StreamHandler(sys.stderr)
      sh.setFormatter(fmt)
      root.addHandler(fh)
      root.addHandler(sh)
      root.propagate = False
      _setup_done = True
331861d5   tangwang   eval框架配置化
42
      return log_file