最近,存在一个问题,即如何针对特定端点(Skip Flask logging for one endpoint?)禁用Python Flask中的日志记录。
例如,对于/healthcheck
来说,这是有意义的,您不想使日志混乱。
我为Flask解决了此问题,但是当使用Gunicorn运行Flask时,我的解决方案不再起作用。
如何使用Gunicorn实现此目标?我想要常规的日志记录行为,但没有/healthcheck
端点的任何日志。
答案 0 :(得分:4)
我知道了-您需要覆盖pre_request
钩子。
这可以如下进行:
您需要创建一个配置文件,例如config/gunicorn.py
:
def pre_request(worker, req):
if req.path == '/healthcheck':
return
worker.log.debug("%s %s" % (req.method, req.path))
然后在启动gunicorn时使用它:
gunicorn server:app -c config/gunicorn.py
答案 1 :(得分:0)
pre_request
钩对我不起作用。我使用来自https://stackoverflow.com/a/52455408/2339067的答案来创建以下gunicorn.conf.py
文件:
import logging
from gunicorn import glogging
class CustomGunicornLogger(glogging.Logger):
def setup(self, cfg):
super().setup(cfg)
# Add filters to Gunicorn logger
logger = logging.getLogger("gunicorn.access")
logger.addFilter(HealthCheckFilter())
class HealthCheckFilter(logging.Filter):
def filter(self, record):
return 'GET /healthcheck' not in record.getMessage()
accesslog = '-'
logger_class = CustomGunicornLogger