我必须在预先存在的系统中实施Celery。该系统的先前版本已使用Python标准日志记录。
我的代码与下面的代码类似。进程一和进程二是非Celery函数,它们在任何地方都是日志记录。如果发生不好的事情,我们正在使用日志来跟踪数据丢失。
@task
def add(x,y):
process_one(x,y)
process_two(x,y)
如何实施Celery并使用Python标准日志记录代替Celery日志记录,以便我们的旧日志系统不会丢失?
我尝试将import logging
从Python更改为:logger = add.get_logger()
并将logger
传递给所有函数,但我认为这不是一个好习惯。我需要另一种解决方案。
更新:要在Celery日志记录中添加应用程序日志记录,您可以执行以下操作:
$ manage.py celeryd -v 2 -B -s celery -E -l debug --traceback \
--settings=settings --logfile=/(path to your log folder)/celeryd.log
将-l
(日志记录)作为debug
,我们的应用程序/ Python日志记录将自动包含在我们的Celery日志记录中:无需执行logger = add.get_logger()
。
答案 0 :(得分:17)
您可能想要此设置:
CELERYD_HIJACK_ROOT_LOGGER = False
告诉我这是怎么回事。
顺便说一句,它劫持根记录器的原因是因为写得不好 库设置日志记录,这是库永远不会做的事情,导致用户体验到没有来自celeryd的输出 工人:(