的celery 3.x docs on logging建議設立任務記錄器,像這樣:我傳遞給芹菜的get_task_logger()函數的參數是什麼?
from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
當我這樣做,CELERYD_TASK_LOG_FORMAT
被忽略,並在日誌語句中使用CELERYD_LOG_FORMAT
相反,在那裏我可以不使用%(task_name)s
和%(task_id)s
。
我的任務是在我的應用程序myapp
中的模塊tasks
。因此,__name__
是myapp.tasks
。
我認爲問題是這些線路在celery/utils/log.py
:
def get_task_logger(name):
logger = get_logger(name)
if logger.parent is logging.root:
logger.parent = task_logger
return logger
所以,無論出於何種原因,傳遞給get_task_logger()
模塊必須是第一層次的模塊,否則任務記錄器沒有連接。沒有評論解釋爲什麼會出現這種情況(我想不出爲什麼你會添加這個限制,真的)。 __name__
不起作用,因爲它引用了第二級模塊。
我犯了一個錯誤還是文檔錯了?如果是這樣,我應該怎麼傳遞給get_task_logger()
呢?
可能通過檯球修復,請參閱https://github.com/celery/celery/issues/1404。 –