我已将日志记录模块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_handler
明确添加到记录器memory_handler
?应该error_mail_handler
设置为DEBUG还是ERROR目标?从中喂食时它甚至还需要一个目标memory_handler
吗?
很乐意从解决此问题的任何人那里看到一些有效的代码。
您可能需要使用或调整BufferingSMTPHandler
其在该测试脚本。
通常,如果它是已添加到记录器的MemoryHandler处理程序的目标,则无需向记录器添加处理程序。如果设置了处理程序的级别,则将影响处理程序的实际处理方式-
它不会处理比其级别设置更严格的任何操作。
本文向大家介绍Python学习笔记整理3之输入输出、python eval函数,包括了Python学习笔记整理3之输入输出、python eval函数的使用技巧和注意事项,需要的朋友参考一下 1. python中的变量: python中的变量声明不需要像C++、Java那样指定变量数据类型(int、float等),因为python会自动地根据赋给变量的值确定其类型。如 radius = 20,ar
问题内容: 我正在编写一个服务器应用程序,该应用程序应该能够在控制台和日志文件上以不同级别登录。 问题是,如果设置了logging.basicConfig(),它将登录到控制台,但是必须在主线程中进行设置。 也可以使用logging.basicConfig(filename =’logger.log’)进行设置以写入文件。 设置用于控制台日志记录(logging.StreamHandler())或
问题内容: 构造之后,使用标准的Java日志记录API(导入java.util.logging.Logger): 我已经可以登录了。由于它没有FileHandler,因此不会向磁盘写入任何内容。 它写入(不是全部)日志消息以输出。如何禁用此功能?在此先感谢Agostino 问题答案: 如果您不知道Java util日志记录的默认配置,就会出现问题。体系结构事实:0)每个记录器(无论其名称是什么)都
问题内容: 现在,我在框架中有一个中央模块,该模块使用模块产生多个进程。由于使用,因此存在模块级的多处理感知日志。根据文档,此记录器具有进程共享的锁,因此你不会通过同时写入多个进程来乱码内容(或任何文件句柄)。 我现在遇到的问题是框架中的其他模块不支持多处理。以我的方式看,我需要使这个中央模块上的所有依赖项都使用支持多处理的日志记录。在框架内这很烦人,更不用说框架的所有客户了。有我没有想到的替代方
问题内容: 我正在设置python日志记录,如下所示: 启用了2个主要的模块记录器,它们都应该作为文件记录到控制台。错误被重定向到文件(理想情况下,错误也会在控制台中显示,但我尚未实现) 之后,我检查是否正确: 控制台输出: 这是文件输出: 如您所见,尽管禁用了传播并确保没有重复的处理程序,但输出还是两倍。这哪里出错了? 问题答案: 我想通了,谢谢Paco为我指出了正确的方向 事实证明,在被调用时
问题内容: 我通过Stata学习了数据操纵和分析,并使用log命令记录了所有写入的命令和生成的输出。这样做可以重现我的发现,检查以前的结果并与其他人共享pdf或txt。在Python中使用什么?如果我使用Python Jupyter Notebook或Spyder有区别吗? 问题答案: 执行所需操作的方法是使用命令,如下所述: 记录IPython输出?