Как удалить метки времени из вывода сельдерея?

При запуске работника сельдерея каждая строка вывода pprint всегда начинается с метки времени и также удаляется. Это делает его совершенно нечитаемым:

[2015-11-05 16:01:12,122: WARNING/Worker-2] {
[2015-11-05 16:01:12,122: WARNING/Worker-2] u'key1'
[2015-11-05 16:01:12,122: WARNING/Worker-2] :
[2015-11-05 16:01:12,122: WARNING/Worker-2] 'value1'
[2015-11-05 16:01:12,122: WARNING/Worker-2] ,
u'_id':
[2015-11-05 16:01:12,122: WARNING/Worker-2] ObjectId('55fff3b74322c53d18ae4687')
...

Есть ли способ, как сказать сельдерею не форматировать вывод pprint?

ОБНОВИТЬ:

вопрос был поставлен немного неправильно. Желаемый результат будет выглядеть примерно так:

[2015-11-05 16:01:12,122: WARNING/Worker-2] 
{
    u'key1': 'value1',
    u'_id': ObjectId('55fff3b74322c53d18ae4687'),
    ...

2 ответа

Решение

Как упомянул @xbirkettx, выходной формат определен в CELERYD_LOG_FORMAT настройка, которая по умолчанию [%(asctime)s: %(levelname)s/%(processName)s] %(message)s,

Итак, в ваших настройках:

CELERYD_LOG_FORMAT = '[%(levelname)s/%(processName)s] %(message)s'

Есть также специальная настройка для логгера в задаче, который по умолчанию:

CELERYD_TASK_LOG_FORMAT = [%(asctime)s: %(levelname)s/%(processName)s]
[%(task_name)s(%(task_id)s)] %(message)s

Удалить asctime ключ, чтобы избавиться от отметки времени. Документы на CELERYD_TASK_LOG_FORMAT,

Обновить

Из документов:

Вы также можете использовать print(), поскольку все, что записано в стандартный out/-err, будет перенаправлено в систему регистрации (вы можете отключить это, см. CELERY_REDIRECT_STDOUTS).

Так что вместо звонка pprint.pprint лучше отформатировать строку pprint.pformat а затем войдите в систему.

@periodic_task(run_every=timedelta(seconds=10))
def pprint_dict2():
    import pprint
    values = {
        u'key1': 'value1',
        u'_id1': "ObjectId('55fff3b74322c53d18ae4687')",
        u'key2': 'value2',
        u'_id2': "ObjectId('55fff3b74322c53d18ae4687')",
        u'key3': 'value3',
        u'_id3': "ObjectId('55fff3b74322c53d18ae4687')",
        u'key4': 'value4',
        u'_id3': "ObjectId('55fff3b74322c53d18ae4687')",
    }
    s = pprint.pformat(values, width=1)
    print(s)  # or even better logger.info(...)

Выход:

[WARNING/Beat] {u'_id1': "ObjectId('55fff3b74322c53d18ae4687')",
 u'_id2': "ObjectId('55fff3b74322c53d18ae4687')",
 u'_id3': "ObjectId('55fff3b74322c53d18ae4687')",
 u'key1': 'value1',
 u'key2': 'value2',
 u'key3': 'value3',
 u'key4': 'value4'}

Попробуйте поиграть с CELERYD_LOG_FORMAT

http://docs.celeryproject.org/en/latest/configuration.html

Другие вопросы по тегам