import logging from logging.handlers import RotatingFileHandler import os from datetime import datetime class Logger: def __init__(self, name, log_dir): self.logger = logging.getLogger(name) self.logger.setLevel(logging.DEBUG) # Create logs directory if it doesn't exist os.makedirs(log_dir, exist_ok=True) # Console handler console_handler = logging.StreamHandler() console_handler.setLevel(logging.INFO) console_format = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s") console_handler.setFormatter(console_format) # File handler timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") log_file = os.path.join(log_dir, f"latest_{timestamp}.log") file_handler = RotatingFileHandler( log_file, maxBytes=10 * 1024 * 1024, backupCount=5, encoding="utf-8" ) file_handler.setLevel(logging.DEBUG) file_format = logging.Formatter( "%(asctime)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s" ) file_handler.setFormatter(file_format) # Add handlers to logger self.logger.addHandler(console_handler) self.logger.addHandler(file_handler) def debug(self, message): self.logger.debug(message) def info(self, message): self.logger.info(message) def warning(self, message): self.logger.warning(message) def error(self, message): self.logger.error(message) def critical(self, message): self.logger.critical(message)