簡體   English   中英

如何訪問每個芹菜任務的日志消息

[英]How to access log messages for each celery task

我對訪問在執行的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實例的形式查看傳遞給處理程序的所有事件(除非被處理程序級別過濾掉)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM