Как удалить метки времени из вывода сельдерея?
При запуске работника сельдерея каждая строка вывода 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