仅发送日志级别 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。
有几个类似的问题被问到,但是 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。