Как настроить скрипт так, чтобы сообщения журналирования уровня INFO отправлялись только в файл, а сообщения уровня WARNING и выше отправлялись и в Телеграмм, и в файл?
Если у вас не работают разные уровни логирования, возможно, проблема заключается в неправильной настройке логгера или обработчиков. Чтобы отправлять сообщения уровня INFO только в файл, а сообщения уровня WARNING и выше и в Телеграмм, и в файл, можно создать два отдельных обработчика - один для записи в файл, другой для отправки сообщений в Телеграмм. Пример кода: ```python import logging from logging.handlers import RotatingFileHandler from logging.handlers import TelegramHandler # Настройка логгера logger = logging.getLogger() logger.setLevel(logging.INFO) # уровень логирования по умолчанию # Создание обработчика для файла file_handler = RotatingFileHandler('app.log', maxBytes=10000, backupCount=1) file_handler.setLevel(logging.INFO) # уровень логирования для файла formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') file_handler.setFormatter(formatter) # Добавление обработчика в логгер logger.addHandler(file_handler) # Создание обработчика для Telegram telegram_handler = TelegramHandler('<token>', '<chat_id>') telegram_handler.setLevel(logging.WARNING) # уровень логирования для Telegram # Добавление обработчика в логгер logger.addHandler(telegram_handler) # Примеры сообщений logger.debug('debug message') logger.info('info message') logger.warning('warning message') logger.error('error message') ``` Помимо этого кода, вам также потребуется настроить обработчик для отправки сообщений в Телеграмм. Для этого можете воспользоваться сторонней библиотекой, например, `python-telegram-handler`. Следует также убедиться, что у вас правильно установлены все необходимые библиотеки и зависимости.
Ты задал уровень WARNING для самого логгера (не для хэндлеров), поэтому он INFO отбрасывает сходу. До хэндлеров ничего не доходит просто.
Я бы использовал эту либу немного по-другому (пример с её гитхаба)
t_handler = tg_logger.TgLoggerHandler(users=[...], token=TELEGRAM_TOKEN) t_handler.setLevel(logging.WARNING) logger.addHandler(t_handler)
Так куда более похоже на обычные лог-хэндлеры, проще управлять и читать даже если с либой мало знаком.
Ну или если очень хочется setup(), то так:
t_handler = tg_logger.setup(logger, token=token, users=users, tg_format="<b><u>%(name)s</u> : %(levelname)s</b>\n\n<code>%(message)s</code>") t_handler.setLevel(logging.WARNING)
Так что логгеру задай уровень подетальнее, INFO или даже DEBUG, а тонкую настройку делай на уровне хэндлеров.