Создание собственного обработчика слабого журнала не работает - PullRequest
0 голосов
/ 01 марта 2020

Я хочу создать пользовательский python протокол Handler для отправки сообщений через slack.

Я нашел этот пакет , но он больше не обновляется, поэтому я создал очень голый костная версия этого. однако, похоже, что это не работает, я добавил вызов print для целей отладки, и emit не вызывается.

import logging
# import slacker

class SlackerLogHandler(logging.Handler):
    def __init__(self, api_key, channel):
        super().__init__()
        self.channel = channel
        # self.slacker = slacker.Slacker(api_key)

    def emit(self, record):
        message = self.format(record)
        print('works')
        # self.slacker.chat.post_message(text=message, channel=self.channel)

slack_handler = SlackerLogHandler('token', 'channel')
slack_handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
slack_handler.setFormatter(formatter)

logger = logging.getLogger('my_app')
logger.addHandler(slack_handler)
logger.info('info_try')  # 'works' is not printed and no slack message is sent

Я видел этот ответ и пытался также унаследовать от StreamHandler, но безрезультатно.

Я думаю, что мне не хватает чего-то очень c.

отредактировано для удаления слабых логи c для удобства воспроизведения.

1 Ответ

0 голосов
/ 01 марта 2020

После некоторого дополнительного поиска я обнаружил, что уровень ведения журнала, который установлен для обработчика, отделен от уровня, который установлен для средства ведения журнала.

означает, что добавление:

logger.setLevel(logging.INFO)

исправляет проблему.

...