仅发送日志级别 python 的电子邮件

send email only for log level python

有几个类似的问题被问到,但是 none 我可以找到专门解决这种情况的问题。

在 python 中,我有一个 class,它使用一个库,当出现错误或无法处理的数据时会抛出异常。

我的 class 包装库,捕获异常并使用记录器记录它们。

我想通过电子邮件发送向我提出的任何异常,但我不想收到每个日志条目的电子邮件。也就是说,我只想在使用 logger.exception("The Exception") 记录某些内容时收到电子邮件,但如果使用 logger.info("Great things are happening")[=11= 记录则不会]

据我了解,SMTP 处理程序会将所有日志条目通过电子邮件发送给我。

您可以创建自己的日志过滤器,如下所示:

import logging


class MessageFilter(logging.Filter):
    def filter(self, record):
        return 'goodbye' in record.msg


logger = logging.getLogger(__name__)


handler = logging.StreamHandler()
handler.addFilter(MessageFilter())
logger.addHandler(handler)


logger.error('hello world')
logger.error('goodbye moon')

这导致

goodbye moon

只需将 filter 中的消息替换为您要匹配的消息并将其附加到您的 SMTPHandler。