如何在使用after_request时获取状态代码?

Dav*_*idK 6 python logging flask

使用after_request时如何获取状态代码(200,500,...)?

我想要的是拥有记录器的输出(例如werkzeug),但是可以添加我想要的东西(用户名,...):

remote_IP,timepoint,path,status_code

Ioa*_*los 9

在每个请求之后注册要运行的函数应该采用响应类对象并返回响应类对象(请参阅http://flask.pocoo.org/docs/0.10/api/#flask.Flask.after_request)

因此,您可以从响应类对象中获取该信息,有关可用内容的更多信息,请参阅http://flask.pocoo.org/docs/0.10/api/#flask.Response

这是一个部分示例:

import logging

#
# your other flask code here
#

@app.after_request
def log_the_status_code(response):
    status_as_string = response.status
    status_as_integer = response.status_code
    logging.warning("status as string %s" % status_as_string)
    logging.warning("status as integer %s" % status_as_integer)
    return response
Run Code Online (Sandbox Code Playgroud)

作为输出,你应该在成功命中后进入控制台:

WARNING:root:status as string 200 OK
WARNING:root:status as integer 200
Run Code Online (Sandbox Code Playgroud)

  • 确保你注意到这个函数结束时的"返回响应",不像我花了一个小时的谷歌搜索"AttributeError:'NoneType'对象没有属性'headers'". (3认同)