Bry*_*wis 1 python logging handler
我已经为我的新python脚本设置了日志记录模块.我有两个处理程序,一个发送文件到一个文件,一个用于电子邮件警报.SMTPHandler设置为以ERROR级别或更高级别邮寄任何内容.
除非SMTP连接失败,否则一切都很好.如果SMTP服务器没有响应或身份验证失败(它需要SMTP身份验证),则整个脚本将终止.
我是python的新手,所以我试图找出如何捕获SMTPHandler正在引发的异常,以便通过电子邮件发送日志消息的任何问题都不会导致我的整个脚本崩溃.由于我也在向日志文件写错误,如果SMTP警报失败,我只想继续,不要停止任何事情.
如果我需要一个"try:"语句,它会绕过logging.handlers.SMTPHandler设置,还是围绕对my_logger.error()的单独调用?
在日志记录期间发生的异常不应该停止脚本,尽管它们可能会导致回溯打印到sys.stderr
.为了防止此打印输出,请执行以下操作:
logging.raiseExceptions = 0
Run Code Online (Sandbox Code Playgroud)
这不是默认设置(因为在开发过程中,您通常希望了解故障),但在生产中,raiseExceptions
不应设置.
您应该SMTPHandler
会在下次记录ERROR(或更高版本)时发现将尝试重新连接.
logging
并通过SystemExit
和KeyboardInterrupt
异常,但所有其他的处理方式,使它们不会导致它使用记录应用程序的终止.如果您发现情况并非如此,请发布正在通过并导致脚本终止的异常的特定详细信息,以及您的Python /操作系统版本.请记住,如果存在导致处理程序阻塞的网络超时(例如,如果DNS查找需要很长时间,或者如果SMTP连接需要很长时间),则脚本可能会挂起.