Spaces:
Running
Running
| import logging | |
| import os | |
| import sys | |
| from typing import Optional | |
| def setup_logger( | |
| logger_name: str = None, | |
| log_level: int = logging.INFO, | |
| log_format: Optional[str] = None, | |
| log_file: Optional[str] = None, | |
| console_output: bool = True | |
| ) -> logging.Logger: | |
| """ | |
| Set up a logger with the specified configuration | |
| Args: | |
| logger_name: Name of the logger (uses root logger if None) | |
| log_level: Logging level (default: INFO) | |
| log_format: Custom log format (uses default if None) | |
| log_file: Path to log file (logs to file if provided) | |
| console_output: Whether to output logs to console | |
| Returns: | |
| Configured logger instance | |
| """ | |
| # Get logger | |
| logger = logging.getLogger(logger_name) | |
| logger.setLevel(log_level) | |
| # Clear existing handlers if any | |
| if logger.handlers: | |
| for handler in logger.handlers[:]: | |
| logger.removeHandler(handler) | |
| # Default log format | |
| if log_format is None: | |
| log_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' | |
| formatter = logging.Formatter(log_format) | |
| # Add file handler if log file is specified | |
| if log_file: | |
| # Ensure directory exists | |
| log_dir = os.path.dirname(log_file) | |
| if log_dir and not os.path.exists(log_dir): | |
| os.makedirs(log_dir) | |
| file_handler = logging.FileHandler(log_file) | |
| file_handler.setFormatter(formatter) | |
| logger.addHandler(file_handler) | |
| # Add console handler if enabled | |
| if console_output: | |
| console_handler = logging.StreamHandler(sys.stdout) | |
| console_handler.setFormatter(formatter) | |
| logger.addHandler(console_handler) | |
| return logger | |