Можно ли контролировать дату в журналах задач Celery? - PullRequest
2 голосов
/ 19 июня 2019

С обычными регистраторами Python вы можете настроить формат строки и формат даты следующим образом:

{                                                                                                     
    'format': '%(asctime)s.%(msecs)d [%(process)d] %(levelname)s [%(name)s] %(message)s',                       
    'datefmt': %d/%m/%Y-%H:%M:%S'                                                                              
}

Но я совершенно не могу найти способ передать datefmt в регистратор задач Celery. Кажется, что это такая базовая функциональность, что я удивляюсь, если это невозможно.

Самым близким, что я получил, было следование технике, изложенной в этой статье . Суть его в том, чтобы использовать сигнал after_setup_task_logger для настройки обработчика регистратора для передачи пользовательского TaskFormatter. Но хитрость в том, что хотя TaskFormatter позволяет передавать строку форматирования, похоже, что нет никаких условий, позволяющих передавать datefmt.

Это, кажется, подтверждается этим открытым выпуском на github Celery.

Так есть что-то очевидное, что я упускаю? Уловка, которая может быть сделана без ожидания сельдерея, чтобы решить вышеупомянутую проблему? Это действительно невозможно?

1 Ответ

1 голос
/ 03 июля 2019

Можно установить datefmt после создания средства форматирования задачи, установив атрибут datefmt.__init__ из Formatter делает именно это.

tf = TaskFormatter('%(asctime)s.%(msecs)d [%(process)d] %(levelname)s [%(name)s] %(message)s')
tf.datefmt = '%d/%m/%Y-%H:%M:%S' 
handler.setFormatter(tf)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...