监督/芹菜输出日志



我正在使用Supervisor来管理芹菜。芹菜的管理器配置文件包含以下2个条目:

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

让我困惑的是,尽管芹菜工作正常,所有任务都成功完成,但它们都被写入celery_error .log。我以为那只适用于错误。log文件只显示正常的芹菜启动信息。将任务成功完成写入错误日志的行为是否正确?

注释 -任务绝对成功完成(电子邮件正在发送,数据库条目制作等)。

我遇到过和你一样的现象。这是因为芹菜的日志机制。查看芹菜记录器源代码的setup_task_loggers方法。

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

那么,清楚了吗?芹菜使用sys。当未指定日志文件时,会发生错误。

解决方案:

  1. 您可以使用superord redirect_stderr = true标志将两个日志文件合并为一个。我用的是这个。
  2. 配置芹菜日志文件选项

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

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

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_error .log有一些警告/错误。

您可能遇到的一个问题是python默认缓冲输出

在你的supervisor文件中,你可以通过设置PYTHONUNBUFFERED环境变量来禁用它,见下面我的Django示例supervisor文件

[program:celery-myapp]
environment=DJANGO_SETTINGS_MODULE="myapp.settings.production",PYTHONUNBUFFERED=1
command=/home/me/.virtualenvs/myapp/bin/celery -A myapp worker -B -l DEBUG
directory=/home/me/www/saleor
user=me
stdout_logfile=/home/me/www/myapp/log/supervisor-celery.log
stderr_logfile=/home/me/www/myapp/log/supervisor-celery-err.log
autostart=true
autorestart=true
startsecs=10

相关内容

  • 没有找到相关文章

最新更新