2010-10-04 2 views
12

У меня есть следующие настройки в моем файле конфигурации сельдерея:Как включить ротацию файлов журналов для celeryd с djcelery?

  1. CELERYD_LOG_DEBUG = 'FALSE'
  2. CELERYD_LOG_FILE = г '/ вар/Журнал/сельдерей/celeryd.log'
  3. CELERYD_LOG_LEVEL = "ОШИБКА"

Я просмотрел файл настроек сельдерея, и в настройке не указывается ограничение размера файла журнала. Даже код выглядит как его использование StreamHandler вместо класса RotationHandler. Любые подсказки/подсказки?

Спасибо.

ответ

21

Для вращения журнала на Ubuntu, если у вас есть свой журнал сельдерея в/вар/журнала/сельдерей/ celeryd.log вы можете использовать конфигурацию, как один выше, чтобы сделать еженедельную ротацию журнала с /etc/logrotate.d /.

/var/log/celery/*.log { 
    weekly 
    missingok 
    rotate 52 
    compress 
    delaycompress 
    notifempty 
    copytruncate 
} 
+0

Я пробовал это, но я точно не работал для меня. Он создает ежедневные файлы (в моем случае), но после того, как журнал будет повернут, хотя файл журнала все еще существует, он остается пустым, пока я не заново заработал celeryd и celerybeat. Есть ли сигнал, который я могу отправить процессу, чтобы он знал, что файл «изменен»? –

+0

Вы должны использовать сельдерей 2.2.5 или выше, там лог-поворот должен работать без проблем. http://docs.celeryproject.org/en/latest/changelog.html#v225-news –

+0

С моей requirements.txt: сельдерея == 2.5.3 Джанго-сельдерея == 2.5.5 Мой запуска команда: python manage.py celeryd_detach --pidfile = {project_location} /celeryd.pid --autoscale = 10,10 --autoreload --loglevel = INFO --logfile = {log_location} /celeryd.log --pythonpath =/usr/share/pyshared После того, как журнал вращается, он остается пустым, пока я не убью предыдущее задание и не перезапустил его. –

1

Пробуйте использовать [WatchedFileHandler][1]. Он замечает, что файл был усечен или изменен в противном случае и снова откроет файл. Обратите внимание, что вы должны установить CELERY_HIJACK_ROOT_LOGGER = False, а затем настроить этот журнал самостоятельно и самостоятельно выполнить logging.getLogger ('custom_logger') внутри задач. См. this post о том, как встроенная каротажная система сельдерея не является гибкой и предназначена для мелкозернистого управления.

Смежные вопросы