如何访问每个芹菜任务的日志消息



我有兴趣访问在执行的Celery任务的生命周期中记录的所有日志消息。

从文档中,我可以为所有任务创建一个记录器,这样任务的id就会自动报告为日志的一部分:

from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
@celery.task
def add(x, y):
    logger.info('Adding %s + %s', x, y)
    return x + y

它会生成这样的日志消息:

[2013-08-09 10:05:02,381: INFO/MainProcess] project.tasks.add[e56cd982-4c20-2328-af55-9cf4d63623df]: Adding 2 + 2

可以根据报告的任务id从logger中提取相关消息,但这似乎非常低效和不雅。

此外,我希望能够在task.ready()返回True之前看到日志消息(就像task.state在完成之前给出PENDING一样)。

我已经阅读了Celery对3.0的日志记录改进、Celery日志记录文档和utils.log源代码,但似乎找不到任何适合我需要的东西。是否可以访问挂起任务的日志消息?我可以很容易地返回StringIO实例捕获消息以及任务的正常返回值,但我有兴趣在完成之前访问任务的日志

有什么建议吗?

logging.Filter添加到处理程序中,该处理程序将返回True(因此日志事件将正常处理)。过滤器将以LogRecord实例的形式查看传递给处理程序的所有事件(除非被处理程序级别过滤掉)。

相关内容

  • 没有找到相关文章

最新更新