gauravlochab
feat: refactore code and add corrected apr and roi values
174e0f0
raw
history blame
2.02 kB
"""
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)