""" Logging configuration and utility functions. """ import os import logging from logging.handlers import RotatingFileHandler import sys from config import settings def setup_logger(name, log_file=None): """ Set up a logger with both console and file handlers. Args: name (str): Logger name log_file (str, optional): Log file path. If None, uses the default from settings. Returns: logging.Logger: Configured logger """ if log_file is None: log_file = settings.LOG_FILE # Create the logs directory if it doesn't exist os.makedirs(os.path.dirname(log_file), exist_ok=True) logger = logging.getLogger(name) logger.setLevel(getattr(logging, settings.LOG_LEVEL)) # Create formatter formatter = logging.Formatter(settings.LOG_FORMAT, datefmt='%Y-%m-%d %H:%M:%S') # Create console handler console_handler = logging.StreamHandler(sys.stdout) console_handler.setLevel(getattr(logging, settings.LOG_LEVEL)) console_handler.setFormatter(formatter) # Create file handler file_handler = RotatingFileHandler( log_file, maxBytes=settings.MAX_LOG_SIZE, backupCount=settings.BACKUP_COUNT ) file_handler.setLevel(getattr(logging, settings.LOG_LEVEL)) file_handler.setFormatter(formatter) # Add handlers to logger logger.addHandler(console_handler) logger.addHandler(file_handler) return logger # Create main application logger main_logger = setup_logger("LOG")