使用Flask转储HTTP请求
我正在开发一个基于Flask的网页应用(https://github.com/opensourcehacker/sevabot),它提供了基于HTTP的API服务。
很多开发者正在使用并扩展这个API,我想添加一个功能,可以把Flask接收到的HTTP请求打印到Python的日志中,这样你就能看到原始的HTTP数据包、来源IP和你收到的头信息。
Flask提供了哪些钩子,可以让我们最简单地实现这种HTTP请求的打印功能?
有没有现成的解决方案和最佳实践可以借鉴?
1 个回答
10
Flask 提供了一个标准的 日志记录器,你可以通过 current_app.logger
来使用它。这里有一个示例配置,可以在 这个链接 找到。如果你想记录每一个请求,也可以在一个叫做 before_request 的处理函数中集中处理日志记录。
from flask import request, current_app
@app.before_request
def log_request():
if current_app.config.get('LOG_REQUESTS'):
current_app.logger.debug('whatever')
# Or if you dont want to use a logger, implement
# whatever system you prefer here
# print request.headers
# open(current_app.config['REQUEST_LOG_FILE'], 'w').write('...')