对于普通的 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 上。
那么我是否明显遗漏了什么?无需等待 celery 处理上述问题就可以完成的技巧?真的不可能吗?
最佳答案
可以在通过设置 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)
关于python - 是否可以控制 Celery 任务日志的 datefmt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56673575/