使用Flask转储HTTP请求

9 投票
1 回答
8596 浏览
提问于 2025-04-17 14:42

我正在开发一个基于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('...')

撰写回答