我正在尝试设置 raven 以使用 celery 异步登录到哨兵。我想我已经正确设置了,但是没有调用 CeleryClient 中的 send_raw 函数(并且在哨兵或芹菜中没有任何东西被拾取)。如果我不更改下面的 SENTRY_CLIENT 设置(日志出现在哨兵中),事情就会起作用。我的设置是:
SENTRY_CLIENT = 'raven.contrib.django.celery.CeleryClient'
已安装的应用程序:
'raven.contrib.django',
# sentry.client.celery should be replaced with raven.contrib.django.celery in INSTALLED_APPS.
'raven.contrib.django.celery',
记录:
记录 = { “版本”:1, 'disable_existing_loggers':是的, '根': { 'level': 'WARNING', # 任何警告或以上的东西都会去哨兵... 'handlers': ['sentry'], # TARAS 这是将所有错误发送到 Sentry 的原因 }, “格式化程序”:{ '详细':{ 'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' }, }, “处理程序”:{ “哨兵”:{ '级别':'错误', 'class': 'raven.contrib.django.handlers.SentryHandler', # 这是与 Sentry 通信的内容 }, '安慰': { '级别':'调试', '类':'logging.StreamHandler', “格式化程序”:“详细” } }, “记录器”:{ 'django.db.backends': { '级别':'错误', '处理程序':['控制台'], “传播”:错误, }, '掠夺': { '级别':'调试', # 类 logging.StreamHandler(stream=None) # 返回 StreamHandler 类的新实例。如果指定了流,实例将使用它来记录输出;否则,将使用 sys.stderr。 'handlers': ['sentry'], # sentry命中sentry配置如上,console默认按照上面streamhandler的定义命中stderr “传播”:错误, }, 'sentry.errors':{ '级别':'调试', '处理程序':['控制台'], “传播”:错误, }, }, }
我已将 CeleryClient 修改为
CeleryClient 类(CeleryMixin,DjangoClient): def send_integrated(self, kwargs): self.send_raw_integrated.delay(kwargs) 打印“哟” @task(routing_key='sentry') def send_raw_integrated(self, kwargs): 超级(CeleryClient,self).send_integrated(kwargs) 打印“yo2”
而且痕迹不出来