Sentry django配置 - 记录器

时间:2016-08-03 10:56:38

标签: python django logging sentry

我正在尝试使用简单的日志记录,并希望向Sentry发送错误/异常。

我根据文档配置了Sentry并在我的dev(python manage.py raven test)上成功运行了测试

我将Sentry documentation中的Logging配置添加到Django设置

当我将此代码放入我的视图中时,它根本不起作用

import logging
logger = logging.getLogger(__name__)
logger.error('There was an error, with a stacktrace!', extra={
    'stack': True,
})

也许我错过了什么

感谢您的帮助

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': 'ERROR', # To capture more than ERROR, change to WARNING, INFO, etc.
            'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
            'tags': {'custom-tag': 'x'},
        },
        '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,
        },
    },
}

2 个答案:

答案 0 :(得分:1)

与Django集成需要在settings.py中使用特殊的Raven Django应用程序和RAVEN_CONFIG:

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

RAVEN_CONFIG = {
    'dsn': 'https://<key>:<secret>@sentry.io/<project>',
}

你有设置它们吗?

答案 1 :(得分:-1)

首先,您不应在__name__方法中使用 .getLogger(),因为它会加载默认的日志记录配置。您可以使用已定义的loggers来记录Django设置:

logger = logging.getLogger('raven')

然后需要在你的Django日志配置中添加sentry个处理程序:

'raven': {
    'level': 'DEBUG',
    'handlers': ['console', 'sentry'],
    'propagate': False,
},