Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用SMTP处理程序记录烧瓶异常_Python_Logging_Flask - Fatal编程技术网

Python 无法使用SMTP处理程序记录烧瓶异常

Python 无法使用SMTP处理程序记录烧瓶异常,python,logging,flask,Python,Logging,Flask,每当我的Flask应用程序出现错误时,我都会尝试收到发送给我的电子邮件。尽管处理程序已注册,但未发送电子邮件。我使用smtplib验证我的SMTP登录详细信息是否正确。错误显示在Werkzeug的调试器中,但不发送电子邮件。如何记录应用程序中发生的异常 import logging from logging.handlers import SMTPHandler from flask import Flask app = Flask(__name__) app.debug = True app

每当我的Flask应用程序出现错误时,我都会尝试收到发送给我的电子邮件。尽管处理程序已注册,但未发送电子邮件。我使用
smtplib
验证我的SMTP登录详细信息是否正确。错误显示在Werkzeug的调试器中,但不发送电子邮件。如何记录应用程序中发生的异常

import logging
from logging.handlers import SMTPHandler
from flask import Flask

app = Flask(__name__)
app.debug = True
app.config['PROPAGATE_EXCEPTIONS'] = True

if app.debug:
    logging.basicConfig(level=logging.INFO)

    # all of the $ names have actual values
    handler = SMTPHandler(
        mailhost = 'smtp.mailgun.org',
        fromaddr = 'Application Bug Reporter <$mailgun_email_here>',
        toaddrs = ['$personal_email_here'],
        subject = 'Test Application Logging Email',
        credentials = ('$mailgun_email_here', '$mailgun_password_here')
    )
    handler.setLevel(logging.ERROR)
    app.logger.addHandler(handler)

@app.route('/')
def index():
    raise Exception('Hello, World!')  # should trigger an email

app.run()
导入日志
从logging.handlers导入SMTPHandler
从烧瓶进口烧瓶
app=烧瓶(名称)
app.debug=True
app.config['PROPAGATE_EXCEPTIONS']=True
如果app.debug:
logging.basicConfig(级别=logging.INFO)
#所有$name都有实际值
handler=SMTPHandler(
mailhost='smtp.mailgun.org',
fromaddr=‘应用程序错误报告程序’,
ToAddress=['$personal\u email\u here'],
主题='测试应用程序日志记录电子邮件',
凭证=(“$mailgun\u email\u here”,“$mailgun\u password\u here”)
)
handler.setLevel(logging.ERROR)
app.logger.addHandler(处理程序)
@应用程序路径(“/”)
def index():
引发异常(“你好,世界!”)#应触发电子邮件
app.run()

问题在于将处理程序添加到哪个记录器
Flask
使用
werkzeug
记录器记录查看功能期间的异常情况,而不是基本
app.logger
。我必须向
werkzeug
记录器注册我的处理程序:

logging.getLogger('werkzeug').addHandler(handler)
此外,我还必须在
mailhost
中包含端口:

handler = SMTPHandler(
    mailhost=('smtp.mailgun.org', 587),
    fromaddr='Application Bug Reporter <$mailgun_email_here>',
    toaddrs=['$personal_email_here'],
    subject='Test Application Logging Email',
    credentials=('$mailgun_email_here', '$mailgun_password_here')
)
handler=SMTPHandler(
mailhost=('smtp.mailgun.org',587),
fromaddr='Application Bug Reporter',
ToAddress=['$personal\u email\u here'],
subject='Test Application Logging Email',
凭证=(“$mailgun\u email\u here”,“$mailgun\u password\u here”)
)

我尝试了您的代码,但仍然无法向我发送电子邮件。我正在使用stmp.google.com,能够通过电子邮件分机发送消息。但是仍然不知道如何在日志中配置它。但是这个文档说您必须将处理程序添加到app.logger。您在哪里读到必须使用根记录器?