python - 使用 Flask 进行简单的日志过滤

标签 python flask logging python-logging

我是 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 编写(在这种情况下运行flask应用程序的网络服务器)。
因此,更好的选择是将日志记录级别提高到 warning :

logging.getLogger("werkzeug").setLevel('WARNING')

如果您真的想使用自定义过滤器 NoHealth ,您可以使用以下解决方案:
logging.getLogger("werkzeug").addFilter(NoHealth())

关于python - 使用 Flask 进行简单的日志过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60962011/

相关文章:

python - 在 tensorflow 0.12中使用MultiRNNCell

python - Flask 中的 POST 请求和 Content-Type "application/json"无响应

logging - PySpark 日志记录?

java - 如何知道我的 Java 应用程序是第一次运行

python - 带有 CKEditor 的 Django 2.0.1 在管理页面上不起作用

python - dict 子类中的自定义迭代行为

python - 没有任何填充的卷积-opencv Python

python - 如何获取 Heroku 应用程序请求的 IP 地址?

python - Flask-WTFoms 字段中的自定义参数

java - 类路径中的 logback.xml 与logging.config一起执行 环境参数 spring boot