import logging import logging.handlers import os import pendulum def setup_logging() -> None: """Configure application logging""" # Create logs directory log_dir = "logs" os.makedirs(log_dir, exist_ok=True) # Log file name with date now = pendulum.now('UTC') log_file = os.path.join(log_dir, f"app_{now.format('YYYYMMDD')}.log") # Create formatter formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # Console handler console_handler = logging.StreamHandler() console_handler.setLevel(logging.INFO) console_handler.setFormatter(formatter) # Rotating file handler file_handler = logging.handlers.RotatingFileHandler( log_file, maxBytes=10 * 1024 * 1024, # 10MB backupCount=5 ) file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(formatter) # Configure root logger root_logger = logging.getLogger() root_logger.setLevel(logging.DEBUG) root_logger.addHandler(console_handler) root_logger.addHandler(file_handler) # Silence noisy loggers logging.getLogger("sqlalchemy.engine").setLevel(logging.WARNING) logging.getLogger("socketio").setLevel(logging.INFO) logging.getLogger("engineio").setLevel(logging.WARNING)