【发布时间】:2019-02-23 17:44:21
【问题描述】:
我有一个带有 gunicorn 的 Flask API。 Gunicorn 将所有请求记录到我的 API,即
172.17.0.1 - - [19/Sep/2018:13:50:58 +0000] "GET /api/v1/myview HTTP/1.1" 200 16 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
但是,我想过滤日志以排除在几秒钟内从其他服务调用的某个端点。
我写了一个过滤器来排除这个端点被记录:
class NoReadyFilter(logging.Filter):
def filter(self, record):
return record.getMessage().find('/api/v1/ready') == -1
如果我将此过滤器添加到 werkzeuglogger 并使用 Flask 开发服务器,过滤器将起作用。对/api/v1/ready 的请求不会出现在日志文件中。但是,我似乎无法将过滤器添加到gunicornlogger。使用以下代码,仍然会出现对/api/v1/ready 的请求:
if __name__ != '__main__':
gunicorn_logger = logging.getLogger('gunicorn.glogging.Logger')
gunicorn_logger.setLevel(logging.INFO)
gunicorn_logger.addFilter(NoReadyFilter())
如何向 gunicorn 记录器添加过滤器?我尝试按照here 的建议将其添加到gunicorn.error-logger,但没有帮助。
【问题讨论】: