首页 > 解决方案 > 仅为日志级别 python 发送电子邮件

问题描述

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

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

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

我想通过电子邮件向自己提出任何异常,但我不想为每个日志条目都收到一封电子邮件。也就是说,我只想在使用 logger.exception("The Exception") 记录某些内容时收到电子邮件,而不是在使用 logger.info("Great things are getting") 记录时收到电子邮件

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

标签: pythonpython-3.xexceptionloggingexception-handling

解决方案


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

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。


推荐阅读