-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils_logging.py
More file actions
executable file
·31 lines (30 loc) · 1.19 KB
/
utils_logging.py
File metadata and controls
executable file
·31 lines (30 loc) · 1.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""
Logging utility for experiment scripts. Provides a logger that writes to both a log file and stdout.
"""
import logging
import os
def get_logger(output_folder, log_level='INFO'):
"""
Returns a logger that writes to both run.log in the output_folder and to stdout.
Args:
output_folder (str): Path to the experiment output folder.
log_level (str): Logging level (e.g., 'INFO', 'DEBUG').
Returns:
logger (logging.Logger): Configured logger.
"""
logger = logging.getLogger('experiment_logger')
if getattr(logger, '_has_handlers', False):
return logger
logger.setLevel(getattr(logging, log_level.upper(), logging.INFO))
formatter = logging.Formatter('[%(asctime)s] %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
# File handler
os.makedirs(output_folder, exist_ok=True)
file_handler = logging.FileHandler(os.path.join(output_folder, 'run.log'))
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
# Stream (stdout) handler
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
logger._has_handlers = True
return logger