python - 是否可以控制 Celery 任务日志的 datefmt?

标签 python logging celery

对于普通的 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/

相关文章:

python - Matplotlib:从条形图中获取颜色和 x/y 数据

java - 将 java 应用程序作为 jar 运行时的 log4j 警告(请正确初始化 log4j 系统。)

java - 如何更新 Logback 中 SMTPAppender 上的 "to"地址?

python - 将 Celery 与现有的 RabbitMQ 消息一起使用

python - 测试 Django 和 Celery

python - 消除 OpenCV 图像大小限制

python - 多列上的 MultipleChoiceField

python - 如果我使用 celery 作为我的任务调度程序,我如何从我的 python 应用程序登录到 splunk?

python - Celery 中如何执行 rate_limit?

python - 正则表达式 - 抓取带有句点 1.1、1.1.1 等的部分