Spaces:
Running
Running
""" | |
Logging configuration for the Modius Agent Performance application. | |
""" | |
import logging | |
import logging.handlers | |
from typing import Optional | |
from ..config.constants import LOGGING_CONFIG | |
def setup_logging(level: Optional[str] = None, log_file: Optional[str] = None) -> None: | |
"""Set up logging configuration.""" | |
log_level = level or LOGGING_CONFIG['level'] | |
log_file = log_file or LOGGING_CONFIG['file'] | |
log_format = LOGGING_CONFIG['format'] | |
# Convert string level to logging constant | |
if isinstance(log_level, str): | |
log_level = getattr(logging, log_level.upper()) | |
# Create logger | |
logger = logging.getLogger() | |
logger.setLevel(log_level) | |
# Clear existing handlers | |
logger.handlers.clear() | |
# Create formatter | |
formatter = logging.Formatter(log_format) | |
# Console handler | |
console_handler = logging.StreamHandler() | |
console_handler.setLevel(log_level) | |
console_handler.setFormatter(formatter) | |
logger.addHandler(console_handler) | |
# File handler with rotation | |
if log_file: | |
file_handler = logging.handlers.RotatingFileHandler( | |
log_file, | |
maxBytes=10*1024*1024, # 10MB | |
backupCount=5 | |
) | |
file_handler.setLevel(log_level) | |
file_handler.setFormatter(formatter) | |
logger.addHandler(file_handler) | |
# Reduce third-party library logging | |
logging.getLogger("urllib3").setLevel(logging.WARNING) | |
logging.getLogger("httpx").setLevel(logging.WARNING) | |
logging.getLogger("matplotlib").setLevel(logging.WARNING) | |
logging.getLogger("requests").setLevel(logging.WARNING) | |
# Log startup information | |
logger.info("============= APPLICATION STARTING =============") | |
logger.info(f"Logging level set to: {logging.getLevelName(log_level)}") | |
if log_file: | |
logger.info(f"Logging to file: {log_file}") | |
def get_logger(name: str) -> logging.Logger: | |
"""Get a logger instance.""" | |
return logging.getLogger(name) | |