2013-11-12 3 views
6

Я начинаю сельдерей через супервизор, см. Запись ниже.Невозможно увидеть журналы из сельдерея во время бега

[program:celery] 
user = foobar 
autostart = true 
autorestart = true 
directory = /opt/src/slicephone/cloud 
command = /opt/virtenvs/django_slice/bin/celery beat --app=cloud -l DEBUG -s /home/foobar/run/celerybeat-schedule --pidfile=/home/foobar/run/celerybeat.pid 
priority = 100 
stdout_logfile_backups = 0 
stderr_logfile_backups = 0 
stdout_logfile_maxbytes = 10MB 
stderr_logfile_maxbytes = 10MB 
stdout_logfile = /opt/logs/celery.stdout.log 
stderr_logfile = /opt/logs/celery.stderr.log 

pip freeze | Grep сельдерей

celery==3.1.0 

Но любое использование:

@celery.task 
def test_rabbit_running(): 
    import logging 
    from celery.utils.log import get_task_logger 
    logger = get_task_logger(__name__) 
    logger.setLevel(logging.DEBUG) 
    logger.info("foobar") 

не появляется в журналах. Вместо этого я получаю записи вроде следующего.

celery.stdout.log

celery beat v3.1.0 (Cipater) is starting. 
__ - ... __ -  _ 
Configuration -> 
    . broker -> redis://localhost:6379// 
    . loader -> celery.loaders.app.AppLoader 
    . scheduler -> celery.beat.PersistentScheduler 
    . db -> /home/foobar/run/celerybeat-schedule 
    . logfile -> [stderr]@%DEBUG 
    . maxinterval -> now (0s) 

celery.stderr.log

[2013-11-12 05:42:39,539: DEBUG/MainProcess] beat: Waking up in 2.00 seconds. 
INFO Scheduler: Sending due task test_rabbit_running (retail.tasks.test_rabbit_running) 
[2013-11-12 05:42:41,547: INFO/MainProcess] Scheduler: Sending due task test_rabbit_running (retail.tasks.test_rabbit_running) 
DEBUG retail.tasks.test_rabbit_running sent. id->34268340-6ffd-44d0-8e61-475a83ab3481 
[2013-11-12 05:42:41,550: DEBUG/MainProcess] retail.tasks.test_rabbit_running sent. id->34268340-6ffd-44d0-8e61-475a83ab3481 
DEBUG beat: Waking up in 6.00 seconds. 

Что я должен сделать, чтобы мои регистрирующие вызовы появляются в лог-файлы?

+0

что содержимое как '' stdout_logfile' и stderr_logfile'? – podshumok

+0

Я добавил примеры для обоих файлов. – kev

ответ

4

Он ничего не регистрирует, потому что он не выполняет никаких задач (и все в порядке).

Смотрите также Celerybeat not executing periodic tasks

+1

Я поменял его на «работник сельдерея - бить ..» в соответствии с новыми документами http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#starting-the-scheduler и его работает сейчас, ты! – kev

0

Я попытался бы поместить вызов для входа в задачу, поскольку имя функции util подразумевает get_task_logger или просто начинается с простой печати или создается собственный журнал, как предлагается в Django Celery Logging Best Practice (лучший способ go IMO)

+0

Ах, извините, я обновил свой пример. Код находится внутри задачи, которая указана в CELERYBEAT_SCHEDULE. Я пробовал решение в «Лучшей практике регистрации журналов Django Celery» (добавил записи в конфигурационный файл django), но я получаю те же результаты, что и я могу просто увидеть заданные xy отправленные сообщения, но не мой вывод журнала. – kev