当Flask应用程序抛出异常时,我们通常会有一个错误处理程序来捕获它:
@app.errorhandler(500)
def serverError(e):
# log to file or something
app.logger.error(e)
return render_template('500.html'), 500
我们如何记录一些额外的数据,比如请求参数?很多时候,除了异常消息本身之外,了解导致异常的输入是有用的。
答案 0 :(得分:2)
只需在request
中记录您想要的任何数据,它在错误处理程序中仍然可用。这是一个简单的处理程序,用于记录标头以及随请求一起发送的任何数据。请注意,Flask已经记录了该异常,您不需要单独记录它。
# make sure to add your own handler when not in debug mode
if not app.debug:
app.logger.addHandler(logging.StreamHandler())
@app.errorhandler(500)
def teardown_request(e):
app.logger.error(request.headers)
if request.args:
app.logger.error(request.args)
if request.form:
app.logger.error(request.form)
elif request.get_json():
app.logger.error(request.get_json())
return render_template('500.html'), 500