【问题标题】:How to send one log record to file and another to email using Python logging module with multiple handlers如何使用具有多个处理程序的 Python 日志记录模块将一条日志记录发送到文件,并将另一条日志记录发送到电子邮件
【发布时间】:2019-01-11 21:27:11
【问题描述】:

我正在使用处理程序 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)

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

【问题讨论】:

    标签: python python-logging


    【解决方案1】:

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

    maillog_handler.setLevel(logging.ERROR)
    

    这样只有 ERROR 和 CRITICAL 事件会发送到电子邮件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-22
      • 1970-01-01
      • 2016-11-12
      • 2020-03-27
      • 2020-11-07
      相关资源
      最近更新 更多