2015-07-22 109 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. 配置芹菜日誌文件選項。