| | """ |
| | Logging utilities for the temporal reasoning dataset pipeline. |
| | """ |
| |
|
| | import logging |
| | import sys |
| | from pathlib import Path |
| | from typing import Optional |
| |
|
| |
|
| | def setup_logger( |
| | name: str, |
| | log_file: Optional[str] = None, |
| | level: str = "INFO", |
| | console_output: bool = True |
| | ) -> logging.Logger: |
| | """ |
| | Set up a logger with file and/or console handlers. |
| | |
| | Args: |
| | name: Name of the logger |
| | log_file: Path to log file (if None, only console logging) |
| | level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
| | console_output: Whether to output logs to console |
| | |
| | Returns: |
| | Configured logger instance |
| | """ |
| | logger = logging.getLogger(name) |
| | logger.setLevel(getattr(logging, level.upper())) |
| | |
| | |
| | logger.handlers = [] |
| | |
| | |
| | formatter = logging.Formatter( |
| | '%(asctime)s - %(name)s - %(levelname)s - %(message)s', |
| | datefmt='%Y-%m-%d %H:%M:%S' |
| | ) |
| | |
| | |
| | if console_output: |
| | console_handler = logging.StreamHandler(sys.stdout) |
| | console_handler.setLevel(getattr(logging, level.upper())) |
| | console_handler.setFormatter(formatter) |
| | logger.addHandler(console_handler) |
| | |
| | |
| | if log_file: |
| | log_path = Path(log_file) |
| | log_path.parent.mkdir(parents=True, exist_ok=True) |
| | file_handler = logging.FileHandler(log_file) |
| | file_handler.setLevel(getattr(logging, level.upper())) |
| | file_handler.setFormatter(formatter) |
| | logger.addHandler(file_handler) |
| | |
| | return logger |
| |
|