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

jme*_*kow 8 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__)
Run Code Online (Sandbox Code Playgroud)

芹菜文档(最新版本,v3.1)在这个主题上非常缺乏.我已经看过了诸如类似的问题这一个,但它仍然是它不清楚使用哪个,为什么要使用那一个,然后将区别具体是什么.我正在寻找一个清晰,简洁的答案.

我也在我的生产环境中使用哨兵.这种选择如何影响您的哨兵日志?即这些常见的设置

Ken*_*ton 5

从使用经验来看,get_task_logger似乎可以为您提供一些重要的东西,尤其是使用 Sentry。

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

重要提示:有一个额外的配置位,需要进入芹菜登记哨兵:

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

您可能会在没有这些设置的情况下让错误流入 Sentry,但我认为这将为您提供最佳跟踪和详细信息 + 确保throws正确忽略诸如通过声明的预期异常之类的事情。