Django/Celery的Sentry登录停止了工作

kev*_*kev 4 django logging celery sentry raven

我不知道什么是错的.到目前为止,日志记录工作正常(我依赖于此),但似乎已经停止了.我写了一个小测试函数(它也不起作用):

core.tasks.py

import logging
from celery.utils.log import get_task_logger

logger = get_task_logger(__name__)
logger.setLevel(logging.DEBUG)

@app.task
def log_error():
    logger.error('ERROR')
Run Code Online (Sandbox Code Playgroud)

settings.py

INSTALLED_APPS += (
    'raven.contrib.django.raven_compat',
)

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'root': {
        'level': 'INFO', #If set to DEBUG, prints ALL DJANGO debug logs.
        'handlers': ['console', 'sentry'],
    },
    'formatters': {
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        #log everything to the console
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
            'formatter': 'simple'
        },
        #logs directly to sentry
        'sentry': {
            'level': 'ERROR',
            'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
            #'class': 'raven.contrib.django.handlers.SentryHandler', #I have tried both
        },
    },
    'loggers': {
        'django.request':{
            'handlers': ['console', 'sentry'],
            'level': 'DEBUG',
            'propagate': False,
        },
        'celery.task':{
            'handlers': ['console', 'sentry'],
            'level': 'DEBUG',
            'propagate': False,
        },
        #this is the logger for celery itself
        'celery':{
            'handlers': ['console', 'sentry'],
            'level': 'ERROR',
            'propagate': False,
        },
    },
}

from logging.config import dictConfig
dictConfig(LOGGING)
Run Code Online (Sandbox Code Playgroud)

在Django shell中执行以下日志记录到控制台但它没有到达Sentry:

from core import tasks
tasks.log_error.delay()
Run Code Online (Sandbox Code Playgroud)

它在同步执行任务时有效:

tasks.log_error()
Run Code Online (Sandbox Code Playgroud)

救命!?

Django == 1.6.2,raven == 5.0.0,sentry == 6.3.2,Python 2.7.3

kev*_*kev 9

我不得不补充一下

CELERYD_HIJACK_ROOT_LOGGER=False
Run Code Online (Sandbox Code Playgroud)

到我的Django settings.py.

我真的不明白为什么我明确告诉芹菜不要劫持根记录器.