将 uvicorn 与 gunicorn 一起使用时,为什么要将日志附加到错误记录器?

问题描述 投票:0回答:0

当 Gunicorn 作为 Uvicorn 的进程管理器 运行时,访问日志、异常等默认情况下不会显示在 Gunicorn 日志中。

我在几个地方找到的解决方案建议以下变化:

gunicorn_error_logger = logging.getLogger("gunicorn.error")
uvicorn_access_logger = logging.getLogger("uvicorn.access")
uvicorn_access_logger.handlers = gunicorn_error_logger.handlers

基本上为 Uvicorn 访问记录器重用 Gunicorn 错误记录器的处理程序。这导致 Uvicorn 访问日志被打印到控制台,但感觉有点不对,因为:

  1. GUnicorn 和 Uvicorn 都努力将访问日志记录与错误日志记录分开
  2. 当用作 worker 时,Uvicorn 已经将其记录器 附加到 Gunicorn 给它的记录器
  3. 使用此解决方案意味着除非另外配置,否则您的 Uvicorn 访问日志将流式传输到 STDERR 而不是 STDOUT

我在这里缺少什么吗?有更好的方法吗?

python flask fastapi gunicorn uvicorn
© www.soinside.com 2019 - 2024. All rights reserved.