Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在芹菜中使用Python标准日志_Python_Django_Logging_Standards_Celery - Fatal编程技术网

在芹菜中使用Python标准日志

在芹菜中使用Python标准日志,python,django,logging,standards,celery,Python,Django,Logging,Standards,Celery,我必须在预先存在的系统中实现芹菜。系统的早期版本已经使用了Python标准日志记录 我的代码与下面的代码类似。进程1和进程2是非芹菜函数,到处都有日志记录。我们正在使用日志记录来跟踪发生错误时的数据丢失 @task def add(x,y): process_one(x,y) process_two(x,y) 如何实现芹菜并使用Python标准日志记录而不是芹菜日志记录,这样我们的旧日志记录系统就不会丢失 我曾尝试将import logging从Python更改为:logger

我必须在预先存在的系统中实现芹菜。系统的早期版本已经使用了Python标准日志记录

我的代码与下面的代码类似。进程1和进程2是非芹菜函数,到处都有日志记录。我们正在使用日志记录来跟踪发生错误时的数据丢失

@task
def add(x,y):
    process_one(x,y)
    process_two(x,y)
如何实现芹菜并使用Python标准日志记录而不是芹菜日志记录,这样我们的旧日志记录系统就不会丢失

我曾尝试将
import logging
从Python更改为:
logger=add.get\u 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\u logger()
您可能需要此设置:

CELERYD_HIJACK_ROOT_LOGGER = False
告诉我结果如何

顺便说一句,它劫持根日志程序的原因是一些错误的代码 库设置日志记录,这是库永远不应该做的事情,导致用户体验不到celeryd的输出
工人:(

Hi Asksol,谢谢你的回答。是的,我同意你关于坏的库的观点。我已经尝试过CELERYD_HIJACK_ROOT_LOGGER的事情。当我咨询我的朋友时,他告诉我,让CELERYD_HIJACK_ROOT_LOGGER=False是不明智的,因为CELERYD worker logging非常重要而且更强大。输出是,celery only redire将日志责任从芹菜记录器转移到root/python记录器,结果是一样的。我认为如果发生这种情况,我更喜欢使用芹菜记录器而不是python记录器。因此芹菜库设置日志记录,因为写得不好的库设置了日志记录?;)听起来像是一个“你看起来很麻烦,所以我最好先杀了你”的论点。@hheimbuerger:呵呵,不错。但是把芹菜想象成一个库并不是很准确。芹菜是一个分布式任务队列应用程序,你基本上只是配置它(以代码的形式)有细节来完成你想要的。不可否认,当与Django等其他应用程序集成时,这可能会变得相当混乱。@hheimbuerger抱歉,我很清楚这一点,但我要重申。你批评芹菜是一个库,这与作者关于库不应该设置日志记录的说法相矛盾。我指出芹菜不是一个库——它是一个应用程序,所以作者关于日志记录的陈述不适用于它。@Manganeez好吧,在这个例子中,我把我的陈述改为:“所以芹菜设置日志记录是因为其他写得不好的软件设置了日志记录。”我的观点仍然站得住脚:芹菜含蓄地批评其他软件篡改了日志设置。我的问题是芹菜篡改了我的日志设置。我觉得这很讽刺。不管你称它为库还是应用程序。