使用 raven 和 sentry 登录 Django
Logging in Django with raven and sentry
我可能会晚点,但我想使用 Sentry 和 Raven 登录 Django。
我设置了 sentry 和 raven,我 运行 对 raven 进行了测试并且它有效。
所以现在我想将我的调试消息发送到哨兵,但我该怎么做呢?
settings.py
RAVEN_CONFIG = {
'dsn': 'http://code4@mydomain:9000/2',
# If you are using git, you can also automatically configure the
# release based on the git info.
'release': raven.fetch_git_sha(BASE_DIR),
}
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
},
'handlers': {
'sentry': {
'level': 'WARNING',
'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
},
'console': {
'level': 'WARNING',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
}
},
'loggers': {
'django': {
'handlers': ['sentry'],
'level': 'DEBUG',
'propagate': True,
},
'raven': {
'level': 'DEBUG',
'handlers': ['sentry'],
'propagate': False,
},
'sentry.errors': {
'level': 'DEBUG',
'handlers': ['sentry'],
'propagate': False,
},
}
}
view.py
import logger
from raven.contrib.django.models import get_client
client = get_client()
client.captureException()
logger = logging.getLogger(__name__)
def my_view(request):
[...]
logger.error('There was some crazy error', exc_info=True, extra={
# Optionally pass a request and we'll grab any information we can
'request': request,
})
[...]
此时它只记录错误和异常,但不会向我发送此错误消息...
raven和sentry的正确使用方法是怎样的?文档完全没有帮助,我的 google foo 也离开了我。有任何提示或有用的教程吗?
您定义了 3 个记录器:django
、raven
和 sentry.errors
。当您调用 logging.getLogger(__name__)
时,您实际上创建了一个 "throw-away",因为您的 ___name__
与以上任何一个都不匹配。
您应该使用 raven
记录器...
logger = logging.getLogger('raven')
logger.debug('Hola!')
...或设置您自己的:
LOGGING = {
# ...
'loggers': {
# ...
'yourapp': {
'level': 'debug',
'handlers': ['sentry'],
'propagate': False,
},
}
}
然后在 yourapp/views.py
:
logger = logging.getLogger(__name__)
logger.debug('Hola!')
我可能会晚点,但我想使用 Sentry 和 Raven 登录 Django。
我设置了 sentry 和 raven,我 运行 对 raven 进行了测试并且它有效。
所以现在我想将我的调试消息发送到哨兵,但我该怎么做呢?
settings.py
RAVEN_CONFIG = {
'dsn': 'http://code4@mydomain:9000/2',
# If you are using git, you can also automatically configure the
# release based on the git info.
'release': raven.fetch_git_sha(BASE_DIR),
}
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
},
'handlers': {
'sentry': {
'level': 'WARNING',
'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
},
'console': {
'level': 'WARNING',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
}
},
'loggers': {
'django': {
'handlers': ['sentry'],
'level': 'DEBUG',
'propagate': True,
},
'raven': {
'level': 'DEBUG',
'handlers': ['sentry'],
'propagate': False,
},
'sentry.errors': {
'level': 'DEBUG',
'handlers': ['sentry'],
'propagate': False,
},
}
}
view.py
import logger
from raven.contrib.django.models import get_client
client = get_client()
client.captureException()
logger = logging.getLogger(__name__)
def my_view(request):
[...]
logger.error('There was some crazy error', exc_info=True, extra={
# Optionally pass a request and we'll grab any information we can
'request': request,
})
[...]
此时它只记录错误和异常,但不会向我发送此错误消息...
raven和sentry的正确使用方法是怎样的?文档完全没有帮助,我的 google foo 也离开了我。有任何提示或有用的教程吗?
您定义了 3 个记录器:django
、raven
和 sentry.errors
。当您调用 logging.getLogger(__name__)
时,您实际上创建了一个 "throw-away",因为您的 ___name__
与以上任何一个都不匹配。
您应该使用 raven
记录器...
logger = logging.getLogger('raven')
logger.debug('Hola!')
...或设置您自己的:
LOGGING = {
# ...
'loggers': {
# ...
'yourapp': {
'level': 'debug',
'handlers': ['sentry'],
'propagate': False,
},
}
}
然后在 yourapp/views.py
:
logger = logging.getLogger(__name__)
logger.debug('Hola!')