如何禁用芹菜工人的工作日志输出?

时间:2014-09-26 11:34:01

标签: python logging ubuntu-12.04 celery supervisord

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

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

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

这是我的主管conf文件

[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

任何人都有解决此问题的方法吗?任何将真正的芹菜错误消息与应用程序日志消息隔离开来的技术都会有所帮助。

2 个答案:

答案 0 :(得分:4)

除非您指定芹菜工作者日志文件,否则它将记录到stderr。因此,使用 当您启动工作人员以避免登录屏幕时-f LOGFILE

例如:

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

答案 1 :(得分:3)

如果您使用自己的记录器处理所有Celery日志消息,但希望启动错误消息能够执行特定日志:

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

这将停止所有发送到stdout的消息