""" Конфигурация логирования для бота """ import logging import logging.handlers import os from datetime import datetime # Создаем директорию для логов если её нет LOGS_DIR = "logs" if not os.path.exists(LOGS_DIR): os.makedirs(LOGS_DIR) # Формат логов LOG_FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' LOG_DATEFORMAT = '%Y-%m-%d %H:%M:%S' # Уровень логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL) LOG_LEVEL = os.getenv('LOG_LEVEL', 'INFO') def setup_logging(): """Настройка логирования для всего приложения""" # Корневой logger root_logger = logging.getLogger() root_logger.setLevel(getattr(logging, LOG_LEVEL)) # Формат formatter = logging.Formatter(LOG_FORMAT, datefmt=LOG_DATEFORMAT) # Handler для консоли console_handler = logging.StreamHandler() console_handler.setLevel(getattr(logging, LOG_LEVEL)) console_handler.setFormatter(formatter) root_logger.addHandler(console_handler) # Handler для файла (ротация по дням) log_file = os.path.join(LOGS_DIR, f'bot_{datetime.now().strftime("%Y-%m-%d")}.log') file_handler = logging.handlers.RotatingFileHandler( log_file, maxBytes=10485760, # 10 MB backupCount=5 ) file_handler.setLevel(logging.DEBUG) # Файл логирует всё file_handler.setFormatter(formatter) root_logger.addHandler(file_handler) # Дополнительные логи для telegram logging.getLogger('telegram').setLevel(logging.WARNING) return root_logger if __name__ == "__main__": # Пример использования setup_logging() logger = logging.getLogger(__name__) logger.debug("Это debug сообщение") logger.info("Это info сообщение") logger.warning("Это warning сообщение") logger.error("Это error сообщение")