17
我必须在预先存在的系统中实现Celery。系统的以前版本已经使用Python标准日志记录。在Celery中使用Python标准日志
我的代码类似于下面的代码。进程1和进程2都是非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
传递给所有函数,但我认为这不是一个好习惯。我需要另一种解决方案
更新:在芹菜日志添加应用程序日志,您可以执行:
$ 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记录自动包含在我们的芹菜记录:不需要执行logger = add.get_logger()
。
嗨Asksol输出,谢谢你的回答。我同意你关于不良库的事情。我已经尝试了CELERYD_HIJACK_ROOT_LOGGER的事情。当我向我的朋友咨询时,他告诉我CELERYD_HIJACK_ROOT_LOGGER = False并不明智,因为芹菜工作者日志记录是非常重要和更强大的。输出是,芹菜只重定向从芹菜记录器到root/python logger的日志责任,结果是一样的。我想如果它发生那样,我更喜欢使用芹菜记录器,而不是p ython之一。 – cactuarz
因此,芹菜库设置日志记录,因为写得不好的库设置日志记录? ;)听起来像'你看起来很麻烦,所以我最好先拍你'的说法。 –
@hheimbuerger:呵呵,很好。但将芹菜视为图书馆并不是很准确。 Celery是一个分布式任务队列*应用程序*,你基本上只是配置它(以代码的形式)与具体细节来完成你想要的。无可否认,当与Django等其他应用程序集成时,这会变得相当混乱。 – CryingCyclops