如何在Flask中记录请求POST主体?

时间:2015-07-26 13:55:54

标签: python logging flask

我正在使用flask服务器,我想记录每个请求数据和标题(因此我可以在之后使用它来测试我的服务器)。 我带了

的werkzeug记录器
    self._app.log = logging.getLogger('werkzeug')
    self._app.log.addHandler(RotatingFileHandler('log.txt', mode='w'))
    self._app.log.setLevel(logging.DEBUG)

但我不明白如何更改日志格式以包含request.data和request.headers,我只有默认日志

    127.0.0.1 - - [17/Feb/2015 17:09:43] "POST /helloworld HTTP/1.1" 200 -

2 个答案:

答案 0 :(得分:28)

您可以使用Flask.before_request挂钩记录每个请求的其他信息:

@app.before_request
def log_request_info():
    app.logger.debug('Headers: %s', request.headers)
    app.logger.debug('Body: %s', request.get_data())

答案 1 :(得分:1)

如何创建一个小助手方法,您可以在烧瓶应用程序的每个控制器中调用该方法。

辅助方法将是这样的:

def log_my_request_data(request_data):
   #this method will log this data

然后在所有控制器中,获取这样的request.data

from flask import request

request_data = request.data

并致电log_my_request_data(request_data)