python - 使用 Flask 进行简单的日志过滤
问题描述
我是 Flask 的新手,我无法过滤掉一些日志。我的用例很简单:我不想记录命中路由的健康检查查询/health
。
这是我所拥有的:
from flask import Flask
from flask.logging import logging
class NoHealth(logging.Filter):
def filter(self, record):
return 'GET /health' not in record.getMessage()
no_health = NoHealth()
app = Flask(__name__)
app.logger.addFilter(no_health)
app.logger.setLevel('INFO')
@app.route('/health')
def health_check():
return "OK"
我要删除的日志如下所示:
127.0.0.1 - - [31/Mar/2020 17:51:03] "GET /health HTTP/1.1" 200 -
然而,他们仍在通过。我错过了什么?
解决方案
访问日志由werzeug
(在这种情况下运行烧瓶应用程序的 Web 服务器)编写。因此,更好的选择是将日志记录级别提高到warning
:
logging.getLogger("werkzeug").setLevel('WARNING')
如果您真的想使用自定义过滤器NoHealth
,您可以使用以下解决方案:
logging.getLogger("werkzeug").addFilter(NoHealth())
推荐阅读
- r - 使用 ggbiplot 在 R 中可视化具有大量变量的 PCA
- go - 如何构建 `cmd/compile` 本身
- jinja2 - jinja2:将变量拆分为数组并循环打印
- java - 如何根据 PreferenceActivity 中的开关以编程方式将开关设置为未选中?
- macos - 在 macOS 上稳健地杀死所有后代进程
- android - 使用 PUT 请求 volley 将文件上传到 AWS S3(在 Android 中)
- powershell - 在 Powershell 中按可用空间对驱动器进行排序
- postgresql - 您如何从 postgresql 获取 prometheus 指标?
- django - 如何从 django admin 调用外部 API 并显示数据,还想从 admin 对外部 API 进行 POST 调用
- html - CSS 选择 #shadow-root