如何使用带有多个处理程序的Python日志记录模块将一个日志记录发送到文件,将另一个日志记录发送到电子邮件

时间:2019-01-11 21:27:11

标签: python python-logging

我正在使用处理程序TimeRotatingFileHandler和SMTPHandler。我想将INFO消息发送到文件日志,将异常发送到电子邮件。我的设置如下:

import logging
from logging.handlers import TimeRotatingFileHandler
from logging.handlers import SMTPHandler

filelog_handler = TimedRotatingFileHandler(output_file, when='midnight')
filelog_handler.setFormatter(log_formatter)
filelog_handler.setLevel(logging.DEBUG)
logger.addHandler(filelog_handler)


maillog_handler = SMTPHandler(mailhost=("email.address.org", 25),
                                         fromaddr="email@address.org",
                                         toaddrs="email@address.org",
                                         subject="send_err_email.py Message")
maillog_handler.setLevel(logging.INFO)
logger.addHandler(mail_log)

当我尝试此代码时,它要么发送到文件和电子邮件,要么什么都不发送。谁能帮助我指出我在做什么错,或者甚至有可能这样做。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您当前在INFO中设置了SMTPHandler级别,因此任何级别为INFO或更高级别的事件都将由该处理程序处理。 您可以将倒数第二行替换为

maillog_handler.setLevel(logging.ERROR)

以便仅将ERROR和CRITICAL事件发送到电子邮件。