2012-03-21 98 views
8

现在django-sentry已经成为一个独立的服务器(而且太棒了),我试图移植我的应用程序来使用它。哨兵,乌鸦和django芹菜

我已经设置了一个独立的服务器,配置了一个django应用程序to log using django 1.3's logging dictionary conf as per the raven docs。我似乎无法得到任何芹菜任务登录到哨兵服务器(他们确实打印到控制台)。

我不确定我应该做什么?我在我的`INSTALLED_APPS'中包含了raven.contrib.django.celery

捕获的异常被发送到放哨,因为是定制日志消息通过:

import logging 
logger = logging.getLogger(__name__) 
... 
logger.info("Logged Message")  
+0

尝试添加* exc_info *到文档中提供的info()。另外,请检查芹菜使用相同的settings.py。 – ilvar 2012-03-22 02:07:55

+0

如果你需要异步looging,你只需要在你的INSTALLED_APPS中使用'raven.contrib.django.celery' – diegueus9 2012-03-22 03:00:01

回答

10

你需要补充一点:

'celery': { 
     'level': 'WARNING', 
     'handlers': ['sentry'], 
     'propagate': False, 
    }, 

要将loggers在你设置的变量LOGGING

类似:

# the site admins on every HTTP 500 error. 
# See http://docs.djangoproject.com/en/dev/topics/logging for 
# more details on how to customize your logging configuration. 
LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': True, 
    'root': { 
     'level': 'WARNING', 
     'handlers': ['sentry'], 
    }, 
    'formatters': { 
     'verbose': { 
      'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d % (message)s' 
     }, 
    }, 
    'handlers': { 
     'sentry': { 
      'level': 'DEBUG', 
      'class': 'raven.contrib.django.handlers.SentryHandler', 
     }, 
     'console': { 
      'level': 'DEBUG', 
      'class': 'logging.StreamHandler', 
      'formatter': 'verbose' 
     } 
    }, 
    'loggers': { 
     'django.db.backends': { 
      'level': 'ERROR', 
      'handlers': ['console'], 
      'propagate': False, 
     }, 
     'raven': { 
      'level': 'DEBUG', 
      'handlers': ['console'], 
      'propagate': False, 
     }, 
     'sentry.errors': { 
      'level': 'DEBUG', 
      'handlers': ['console'], 
      'propagate': False, 
     }, 
     'celery': { 
      'level': 'WARNING', 
      'handlers': ['sentry'], 
      'propagate': False, 
     }, 
    }, 
} 
+0

看看这个关卡,也许你需要DEBUG而不是WARNING – diegueus9 2012-03-22 03:00:48

+0

这样仍然不行。我不明白为什么'raven'记录器记录到'console'处理程序而不是'sentry'。这是因为有一个“根”记录器可以记录所有内容吗? – 2012-03-27 14:03:02

+0

在我的代码片段中,我告诉raven明确指出登录到控制台,根记录器默认告诉发送日志给sentry,我认为这个问题与版本有什么关系,我用celery 2.4.6,django-celery 2.4 .2,并且狂欢1.4.3,但我再次用最新版本测试它,并且taks的日志没有出现在哨兵 – diegueus9 2012-03-27 19:33:35