关于芹菜整合和使用特定记录器的哨兵示例之后无法正常工作,因为哨兵正在接收任何错误或任何记录器。 无论如何要控制记录器发送到哨兵?
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',
},
}
}
答案 0 :(得分:0)
在您的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()