【问题标题】:sentry, raven and django celery哨兵、乌鸦和 django 芹菜
【发布时间】:2012-04-06 07:05:38
【问题描述】:

现在django-sentry 已经成为一个独立的服务器(非常棒),我正在尝试移植我的应用程序以使用它。

我已经建立了一个独立的服务器,配置了一个 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")    

【问题讨论】:

  • 尝试按照文档中的说明将 exc_info 添加到 info() 中。另外,检查 celery 是否使用相同的 settings.py。
  • 如果你需要异步浏览,你只需要在你的 INSTALLED_APPS 中使用'raven.contrib.django.celery'

标签: python django logging sentry raven


【解决方案1】:

你需要添加这个:

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

到您的设置中变量LOGGING 中的loggers

类似:

# 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,
        },
    },
}

【讨论】:

  • 看关卡,也许你需要DEBUG而不是WARNING
  • 不幸的是,这仍然不起作用。我不明白为什么raven 记录器正在记录到console 处理程序而不是sentry。这是因为有一个 root 记录器可以收集所有内容吗?
  • 在我的 sn-p 中,我告诉 raven 显式地将该日志记录到控制台,根记录器默认情况下告诉将日志发送到哨兵,我认为问题与版本有关,我对此进行了测试celery 2.4.6、django-celery 2.4.2 和 rave 1.4.3 但我用最新版本再次测试它并且 taks 的日志没有出现在哨兵中
  • 所以我将 sentry 升级到 4.0.17 并将 raven 升级到 1.75(celery 2.5.1),现在简单地添加一个 celery 记录器似乎工作正常。感谢您的帮助
【解决方案2】:

从 Raven 5+ 开始,您可能需要向 Django 项目添加设置,如 Sentry logging in Django/Celery stopped working 中所述

CELERYD_HIJACK_ROOT_LOGGER = 假

【讨论】:

    猜你喜欢
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2018-01-21
    • 2014-01-21
    • 1970-01-01
    • 2020-08-25
    • 2015-01-10
    相关资源
    最近更新 更多