gpt4 book ai didi

python - 使用 SMTPHandler 在 Python logging MemoryHandler 中整理输出

转载 作者:IT老高 更新时间:2023-10-28 20:51:56 40 4
gpt4 key购买 nike

我设置了日志记录模块 MemoryHandler 来排队 SMTPHandler 目标的调试和错误消息。我想要的是当包含所有调试语句的过程错误时发送一封电子邮件(每行一个)。相反,我得到的是每条调试消息的单独电子邮件。

这似乎应该是微不足道的,并且是日志记录包的一部分,但我找不到任何关于它的信息,没有示例,在 Google 上什么也没有。

log = logging.getLogger()
log.setLevel(logging.DEBUG)
debug_format = logging.Formatter("%(levelname)s at %(asctime)s in %(filename)s (line %(lineno)d):: %(message)s")

# write errors to email
error_mail_subject = "ERROR: Script error in %s on %s" % (sys.argv[0], os.uname()[1])
error_mail_handler = logging.handlers.SMTPHandler(SMTP_HOST, 'errors@'+os.uname()[1], [LOG_EMAIL], error_mail_subject)
error_mail_handler.setLevel(logging.ERROR)
#error_mail_handler.setLevel(logging.DEBUG)
error_mail_handler.setFormatter(debug_format)

# buffer debug messages so they can be sent with error emails
memory_handler = logging.handlers.MemoryHandler(1024*10, logging.ERROR, error_mail_handler)
memory_handler.setLevel(logging.DEBUG)

# attach handlers
log.addHandler(memory_handler)
log.addHandler(error_mail_handler)

与此相关:

如果 error_mail_handlermemory_handler 的目标,我是否需要将它显式添加到记录器中?error_mail_handler 应该设置为 DEBUG 还是 ERROR 目标?当它从 memory_handler 被馈送时,它甚至需要一个目标吗?

希望看到任何解决此问题的人提供的一些工作代码。

最佳答案

您可能想要使用或调整 this test script 中的 BufferingSMTPHandler .

一般来说,如果它是已添加到记录器的 MemoryHandler 处理程序的目标,则不需要将处理程序添加到记录器。如果您设置处理程序的级别,这将影响处理程序实际处理的内容 - 它不会处理任何比其级别设置更轻的内容。

关于python - 使用 SMTPHandler 在 Python logging MemoryHandler 中整理输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1610845/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com