使用 Flask 进行简单的日志过滤
Simple log filtering with 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 服务器 运行 flask 应用程序)。
因此,更好的选择是将日志记录级别提高到 warning
:
logging.getLogger("werkzeug").setLevel('WARNING')
如果您真的想使用自定义过滤器 NoHealth
,您可以采用以下解决方案:
logging.getLogger("werkzeug").addFilter(NoHealth())
我是 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 服务器 运行 flask 应用程序)。
因此,更好的选择是将日志记录级别提高到 warning
:
logging.getLogger("werkzeug").setLevel('WARNING')
如果您真的想使用自定义过滤器 NoHealth
,您可以采用以下解决方案:
logging.getLogger("werkzeug").addFilter(NoHealth())