对于普通的python记录器,您可以这样配置格式字符串和日期格式:
{
'format': '%(asctime)s.%(msecs)d [%(process)d] %(levelname)s [%(name)s] %(message)s',
'datefmt': %d/%m/%Y-%H:%M:%S'
}
但是我完全找不到将datefmt
传递给Celery任务记录器的任何方法。似乎如此基本的功能让我感到惊讶,如果不可能的话。
我最接近的是遵循this article中介绍的技术。其要旨是使用after_setup_task_logger
信号来自定义记录程序处理程序以传递自定义TaskFormatter
。但是诀窍在于,尽管让TaskFormatter
传递格式字符串,但似乎没有任何规定允许您传递datefmt
。
this open issue在Celery github上似乎得到了证实。
那么我明显缺少什么吗?无需等待芹菜处理上述问题就可以完成的技巧吗?真的不可能吗?
答案 0 :(得分:1)
可以在设置任务格式化程序后通过设置datefmt属性来设置datefmt。 Formatter中的__init__
就是这样做的。
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)