2015-07-22 111 views
4

我正在使用主管来管理芹菜。芹菜监督员配置文件包含以下2项:Supervisord /芹菜输出日志

stdout_logfile = /var/log/supervisor/celery.log 
stderr_logfile = /var/log/supervisor/celery_err.log 

什么是困惑我的是,虽然芹菜正常工作和各项任务正在顺利完成,他们都写入celery_err.log。我认为这只会是错误。 celery.log文件只显示正常的芹菜启动信息。将错误日志写入成功任务完成的行为是否正确?

注意 - 任务完成成功(电子邮件发送,数据库条目等)。

回答

0

将写入成功任务完成的行为写入错误日志是否正确?

不,它不是。我有相同的设置和日志记录工作正常。

celery.log有任务信息

[2015-07-23 11:40:07,066: INFO/MainProcess] Received task: foo[b5a6e0e8-1027-4005-b2f6-1ea032c73d34] 
[2015-07-23 11:40:07,494: INFO/MainProcess] Task foo[b5a6e0e8-1027-4005-b2f6-1ea032c73d34] succeeded in 0.424549156s: 1 

celery_err.log有一些警告/错误。尝试重新启动监督员进程。

2

我遇到了和你一样的现象。这是因为芹菜的记录机制。请参阅celery logger source的setup_task_loggers方法。

如果没有指定logfile,则使用sys.stderr

那么,清楚了吗?当没有指定日志文件时,Celery使用sys.stderr。

解决方案:

  1. 您可以使用supervisord了redirect_stderr = true标志,以两个日志文件合并成一个。我正在使用这个。
  2. 配置芹菜日志文件选项。