我正在尝试设置 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”
而且痕迹不出来