【问题标题】:How to disable worker log output from celery worker?如何禁用芹菜工人的工人日志输出?
【发布时间】:2014-09-26 11:34:01
【问题描述】:

我这里有个情况。我有一个芹菜任务,它使用 python 记录器记录到日志文件。但是,当我运行 celery workers 时,我可以在屏幕上看到日志消息。它被写入日志文件,但我的屏幕上也有大量消息。

当我将 celery 放入 supervisord 时,问题就出现了。我已经设置了 std_out 路径和 std_err 路径,但是所有工作日志消息都被写入 std_err 日志文件而不是 std_out 日志文件。这样我就无法在 std_err 中获取真正的错误消息,而且日志消息是多余的,因为它无论如何都会被写入应用程序日志文件。

我尝试在启动 celery worker 时设置日志级别,但似乎没有什么能阻止工人将日志消息刷新到屏幕上,当在 supervisord 中运行时,这些消息会被写入 std_err。

这是我的主管配置文件

[program:celery_worker]
command=celery -A CeleryWorker worker --concurrency=4 -l error
directory=/home/swaroop/codebase/src
stdout_logfile=/home/swaroop/codebase/logs/clLogger.log
stderr_logfile=/home/swaroop/codebase/logs/clerrorLogger.log
autostart=true
autorestart=true

有人有解决这个问题的办法吗?任何将真正的 celery 错误消息与应用程序日志消息分开的技术都会有所帮助。

【问题讨论】:

  • 你或@FelixBöhme 解决了吗?

标签: python logging ubuntu-12.04 celery supervisord


【解决方案1】:

除非您指定 celery worker 日志文件,否则它将记录到 stderr。因此,使用 -f LOGFILE 当你启动一个 worker 以避免登录到屏幕时。

例如:

$celery -A proj worker -f proj.log -l ERROR

【讨论】:

    【解决方案2】:

    如果您使用自己的记录器处理所有 Celery 日志消息,但希望启动错误消息进入特定日志,我会这样做:

    celery worker --app proj --logfile=/dev/null
    

    这将阻止所有消息进入标准输出

    【讨论】:

      猜你喜欢
      • 2021-08-13
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2014-06-09
      • 2019-03-13
      • 1970-01-01
      相关资源
      最近更新 更多