【问题标题】:Simple log filtering with Flask使用 Flask 进行简单的日志过滤
【发布时间】:2020-07-12 16:17:44
【问题描述】:

我是 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 -

但是,他们仍然在通过。我错过了什么?

【问题讨论】:

    标签: python flask logging python-logging


    【解决方案1】:

    访问日志由werzeug(本例中运行flask 应用的Web 服务器)编写。 因此,更好的选择是将日志记录级别提高到warning

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

    如果您真的想使用自定义过滤器NoHealth,您可以使用以下解决方案:

    logging.getLogger("werkzeug").addFilter(NoHealth())
    

    【讨论】:

    • 就是这样!谢谢!最终,我想将运行状况检查日志发送到 DEBUG 并继续正常查看常规访问日志,但现在我知道它们来自哪里,这很容易。
    猜你喜欢
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    相关资源
    最近更新 更多