使用特定哨兵记录器的芹菜任务不起作用



以下哨兵示例进行芹菜集成并使用特定记录器不起作用,因为哨兵收到任何错误或任何记录器。 无论如何要控制伐木工送给哨兵?

import logging
import celery
import raven
from raven.contrib.celery import register_signal, register_logger_signal
sentry_logger = logging.getLogger("logger_for_sentry")
class Celery(celery.Celery):
def on_configure(self):
client = raven.Client('https://<key>:<secret>@sentry.io/<project>')
# register a custom filter to filter out duplicate logs
register_logger_signal(client, logger=sentry_logger)
# hook into the Celery error handler
register_signal(client)
app = Celery(__name__)
app.config_from_object('django.conf:settings')

这些是我的日志记录设置,当我在网上跟踪my_logger1时,它会按预期工作,而不是发送给哨兵,但是在芹菜中它会发送

LOGGING = {
...
'loggers': {
'sentry_logger': {
'handlers': ['console', 'sentry'],
'level': 'INFO',
'propagate': True,
},
'my_logger1': {
'handlers': ['console'],
'level': 'INFO',
'propagate': True
},
'sentry': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
},
'sentry.errors': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
},    
}
}

在你的 django 日志记录设置中设置一个celery记录器,如下所示:

LOGGING = {
# ...
'loggers': {
# ...
'celery': {
'level': 'WARNING',
'propagate': False,
'handlers': ['console'],  # use only console for celery
},
}
}

在您的celery.py

import os
from celery import Celery
# set your real settings module instead `apps.settings`
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'apps.settings')  
app = Celery('ag')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

最新更新