python - celery.utils.log 和 logging 中的 get logger 函数有什么不同?

标签 python django logging celery

我一直在试图找出 python 记录器和 celery 记录器之间的区别,特别是下面命令之间的区别,但找不到好的答案。

我正在使用 celery 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__)

celery 文档(latestv3.1)非常缺乏关于这个主题的内容。 我看过类似的问题,例如 this one , 但仍然不清楚使用哪个,为什么使用那个,以及具体有什么区别。我正在寻找一个清晰、简洁的答案。

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

最佳答案

根据使用 get_task_logger 的经验,您似乎可以获得一些重要的东西,尤其是使用 Sentry 时。

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

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

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

如果不进行某些设置,您可能会导致错误流入 Sentry,但我认为这将为您提供最好的跟踪和详细信息 + 确保诸如通过 throws 声明的预期异常之类的事情被适本地忽略了。

关于python - celery.utils.log 和 logging 中的 get logger 函数有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43301265/

相关文章:

java - ClassCastException : org. slf4j.impl.Log4jLoggerAdapter 无法转换为 ch.qos.logback.classic.Logger

python - 为什么 gevent.spawn 在调用 Greenlet.join 之前不执行参数化函数?

python - 在 Maya 中将着色器存储为 Python 变量

python - 使用 django 设置 sqlite3 时遇到问题! :/

python - 以编程方式管理 'balance' 时间(生病/休假)

mysql - 在 Amazon RDS 上启用 MySQL 通用日志

python - 从另一个 DataFrame 添加多个列时出现 Pandas KeyError

python - 如何使用 gevent 创建一个简单的调度程序?

Django:删除多对多的一侧时没有 m2m_changed 信号?

iphone - 应用程序中的尴尬崩溃-附加了崩溃日志