如何保存请求参数以及Flask异常?

时间:2015-08-28 18:11:29

标签: python error-handling flask

当Flask应用程序抛出异常时,我们通常会有一个错误处理程序来捕获它:

@app.errorhandler(500)
def serverError(e):
    # log to file or something
    app.logger.error(e)
    return render_template('500.html'), 500

我们如何记录一些额外的数据,比如请求参数?很多时候,除了异常消息本身之外,了解导致异常的输入是有用的。

1 个答案:

答案 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