Django logging ломает демона сельдерея - PullRequest
0 голосов
/ 05 января 2012

Я использую django 1.3 с django-сельдереем 2.4.2 на производстве.

Поскольку я активировал ведение журнала django в файле django settings.py, демон celeryd (celeryd) больше не работает Удаление функции регистрации исправляет проблему.

Мой код входа в файл settings.py выглядит следующим образом:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
        },
    },
    'handlers': {
        'write_to_log': {
            'level':'WARNING',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': '/path/to/project/logs/errors.log',
            'maxBytes': 1024*1024*5, # 5 MB
            'backupCount': 5,
            'formatter':'standard',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['write_to_log'],
            'level': 'WARNING',
            'propagate': True
        }
    }
}

Edit: Я добавил следующий код перед словарем LOGGING, который исправляет проблему. Если у кого-то есть более чистое решение, я бы хотел услышать.

import sys
if not "celeryd" in sys.argv:
    LOGGING = ...

1 Ответ

2 голосов
/ 23 февраля 2012

celeryd перехватывает и настраивает корневой логгер, поэтому может возникнуть конфликт.

Попробуйте отключить захват сельдерея с помощью:

CELERYD_HIJACK_ROOT_LOGGER=False
...