[英]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.