Skip to content

Commit ca126dd

Browse files
committed
works
1 parent d5090e6 commit ca126dd

File tree

2 files changed

+200
-125
lines changed

2 files changed

+200
-125
lines changed

eval_protocol/logging_utils.py

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import logging
1010
import os
11+
import sys
1112
from pathlib import Path
1213
from typing import Optional
1314

@@ -41,6 +42,11 @@ def setup_logger(
4142

4243
# Create logger
4344
logger = logging.getLogger(name)
45+
46+
# Only configure if not already configured (has handlers and proper level)
47+
if logger.handlers and logger.level != logging.NOTSET:
48+
return logger
49+
4450
logger.setLevel(level)
4551

4652
# Clear existing handlers to avoid duplicates
@@ -50,20 +56,23 @@ def setup_logger(
5056
file_formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
5157
console_formatter = logging.Formatter("%(levelname)s - %(message)s")
5258

53-
# Console handler
54-
console_handler = logging.StreamHandler()
59+
# Console handler - explicitly write to sys.stdout
60+
console_handler = logging.StreamHandler(sys.stdout)
5561
console_handler.setLevel(console_level)
5662
console_handler.setFormatter(console_formatter)
5763
logger.addHandler(console_handler)
5864

59-
# File handler (if log_file specified)
65+
# File handler (if log_file specified) - explicitly write to file only
6066
if log_file:
6167
log_file_path = logs_dir / log_file
6268
file_handler = logging.FileHandler(log_file_path)
6369
file_handler.setLevel(file_level)
6470
file_handler.setFormatter(file_formatter)
6571
logger.addHandler(file_handler)
6672

73+
# Prevent propagation to avoid duplicate logging
74+
logger.propagate = False
75+
6776
return logger
6877

6978

@@ -81,7 +90,19 @@ def get_logger(name: str) -> logging.Logger:
8190

8291
# If logger doesn't have handlers, set it up with defaults
8392
if not logger.handlers:
84-
logger = setup_logger(name, f"{name}.log")
93+
# For eval_watcher, check if running in daemon mode
94+
if name == "eval_watcher":
95+
import sys
96+
97+
# Check if running in daemon mode (subprocess)
98+
if "--daemon" in sys.argv:
99+
# Subprocess: log to file only
100+
logger = setup_logger(name, f"{name}.log", console_level=logging.CRITICAL)
101+
else:
102+
# Top-level: log to console only
103+
logger = setup_logger(name, None)
104+
else:
105+
logger = setup_logger(name, f"{name}.log")
85106

86107
return logger
87108

0 commit comments

Comments
 (0)