mpa*_*per 7 python logging flask gunicorn
最近,有一个问题是如何禁用 Python Flask 中特定端点的日志记录(Skip Flask logging for one endpoint?)。
例如,对于/healthcheck您不想弄乱日志的情况,这是有道理的。
我为 Flask 解决了这个问题,但是当使用 Gunicorn 运行 Flask 时,我的解决方案不再起作用。
我如何使用 Gunicorn 实现这一目标?我想要常规的日志记录行为,但没有/healthcheck端点的任何日志。
该pre_request钩是不是为我工作。我使用/sf/answers/3671878591/的答案来创建以下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
Run Code Online (Sandbox Code Playgroud)
我想通了 - 你需要覆盖pre_request钩子。
这可以按如下方式完成:
您需要创建一个配置文件,例如config/gunicorn.py:
def pre_request(worker, req):
if req.path == '/healthcheck':
return
worker.log.debug("%s %s" % (req.method, req.path))
Run Code Online (Sandbox Code Playgroud)
然后在启动 gunicorn 时使用它:
gunicorn server:app -c config/gunicorn.py
| 归档时间: |
|
| 查看次数: |
3041 次 |
| 最近记录: |