import logging import os import datetime from logging.handlers import RotatingFileHandler class Logger: def __init__(self, name): # Инициализация логгера self.logger = logging.getLogger(name) # Сохраняем logger как свойство класса self.logger.setLevel(logging.INFO) # Формат записи логов formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(filename)s - %(lineno)d - %(message)s') # Получение сегодняшней даты для имени файла today = datetime.date.today().strftime('%Y-%m-%d') # Создание папки для логов current_dir = os.path.dirname(os.path.abspath(__file__)) logs_dir = os.path.join(current_dir, 'logs') if not os.path.exists(logs_dir): # Если не существует, создаем ее os.makedirs(logs_dir) filename = f'logs/helper_bot_{today}.log' # Создание обработчика для файла логов file_handler = RotatingFileHandler( filename, mode='a', maxBytes=10 * 1024 * 1024, # Максимальный размер файла (10 МБ) backupCount=3 # Количество резервных файлов ) file_handler.setFormatter(formatter) # Добавление обработчика к логгеру self.logger.addHandler(file_handler) # Добавление стандартного обработчика # чтобы сообщения также отображались на консоли console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) self.logger.addHandler(console_handler) def info(self, message): self.logger.info(message) def debug(self, message): self.logger.debug(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)