celery.utils.log中的get logger函数和日志记录之间有什么不同?

时间:2017-04-08 23:06:11

标签: python django logging celery

我一直试图弄清楚python记录器和芹菜记录器之间的区别,特别是下面命令之间的差异,但找不到一个好的答案。

我正在使用芹菜v3,django 1.10。

from celery.utils.log import get_task_logger
logger = get_logger(__name__)
...
from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
...
import logging
logger = logging.get_logger(__name__)

芹菜文档(latestv3.1)在这个主题上非常缺乏。 我已经查看了this one等类似的问题,但是仍然不清楚使用哪个,为什么要使用那个,具体是差异是什么。我正在寻找一个清晰,简洁的答案。

我也在生产环境中使用哨兵。这种选择如何影响您的哨兵日志?即these共同设置

1 个答案:

答案 0 :(得分:3)

使用get_task_logger的经验似乎为您提供了一些重要的事情,特别是对于Sentry。

  • 自动将任务名称添加到日志输出
  • 能够将日志处理规则设置在比模块更高的级别(我相信实际将记录器名称设置为celery.task
  • 对于Sentry设置来说,最重要的是它可以将日志记录挂钩到Sentry使用的日志处理程序中。

重要提示:有一个bit of extra config需要进入Sentry的Celery注册:

https://docs.sentry.io/clients/python/integrations/celery/

如果没有这些设置,您可能会遇到错误流入Sentry,但我认为这将为您提供最佳跟踪和详细信息+确保通过throws声明的预期异常等内容被正确忽略。