64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
"""
|
|
Конфигурация логирования для бота
|
|
"""
|
|
|
|
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 сообщение")
|