发生内部错误时如何通知sysadmin?

时间:2015-10-19 12:27:32

标签: python logging flask

我阅读了一些关于在Flask中登录的文档和一些示例。然后我写下这段代码:

ADMINS = [config["sys_admin_email"]]

if not app.debug:
    from logging.handlers import SMTPHandler

    mail_handler = SMTPHandler(mailhost=('smtp.email.com', 587),
                               credentials=('helpdesk@email.com', 'fsociety'),
                               fromaddr='helpdesk@email.com',
                               toaddrs=ADMINS, subject='Service Failed')
    mail_handler.setLevel(logging.ERROR)
    # config the format
    mail_handler.setFormatter(logging.Formatter('''
        Message type:       %(levelname)s
        Location:           %(pathname)s:%(lineno)d
        Module:             %(module)s
        Function:           %(funcName)s
        Time:               %(asctime)s

        Message:

        %(message)s
        '''))
    app.logger.addHandler(mail_handler)

但我无法理解mail_handler如何处理异常? 我问这是因为我想在内部错误(500)引发时通知我的系统管理员。

注意:也许我需要一个错误处理程序,所以我创建了这个方法来捕获所有内部错误。但是不起作用。

@app.errorhandler(500)
def reportToSysAdmin(e):
    app.logger.error(e)
    print "email sent"

1 个答案:

答案 0 :(得分:0)

请查看以下链接:

http://flask.pocoo.org/docs/0.10/errorhandling/

<强>详细信息:

上面的代码创建了一个新的SMTPHandler,它将邮件服务器127.0.0.1上的邮件发送到地址为server-error@example.com的所有ADMINS,主题为“服务失败”。如果您的邮件服务器需要凭据,也可以提供这些凭据。为此,请查看SMTPHandler的文档。