Flask 框架中的标准代码允许在用户遇到导致错误的页面时向人们发送电子邮件,通常(以及我已实现的)在app.py脚本中如下所示:
from app import app
...
if not app.debug:
import logging
from logging.handlers import SMTPHandler
mail_handler = SMTPHandler(EMAIL_SERVER,
EMAIL_FROM,
EMAIL_ADMINS,
EMAIL_SUBJECT,
credentials=(EMAIL_ EMAIL,'***'),
port=EMAIL_PORT)
mail_handler.setLevel(logging.ERROR)
app.logger.addHandler(mail_handler)
这很棒,因为它会发送一封包含启动调试过程信息的电子邮件,如下所示:
Exception on / [GET]
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\flask\app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "C:\Python27\lib\site-packages\flask\app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Python27\lib\site-packages\flask\app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Python27\lib\site-packages\flask\app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Python27\lib\site-packages\flask\app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "hello.py", line 6, in hello_world
raise Exception
Exception
这不包含用户输入的 GET/POST 变量。这些可能是调试过程的关键,这就是我的问题。您如何request.form在这封电子邮件中包含所有变量(用于 GET/POST)?
虽然我无法通过 Google 找到该问题的直接答案,但我找到的最接近的资源是 Flask 文档(http://flask.pocoo.org/docs/1.0/logging/#logging),其中有一个部分“注入请求信息”讨论了子类化,logging.Formatter但它指的是额外的信息,例如 IP 地址,并需要识别特定的值。
这让我想到了我的问题:
如何修改日志电子邮件以包含来自用户的错误和所有请求(GET/POST)数据?
汪汪一只猫
相关分类