Sentry

에러 트래킹 시스템

Nginx 로그는 직접 봐야 한다. /var/log/nginx/error.log uWSGI 로그는 대부분 Django에서 나는 에러를 uWSGI가 잡는 것. 만약 Intenal server error일 경우 보통 uWSGI 에러인데 Django에서 에어를 트래킹을 못할수도 있다. 장고에서 일어난 에러의 경우 대부분 400 Bad request가 발생하는데 그 부분의 로그를 보려면 uWSGI로 들어가서 에러를 봐야 한다. 좀더 편하게 에러 로그를 보기위해 에러 트래킹 시스템을 써보자.

Sentry

설치

pip install raven --upgrade

설정 config/settings.py

import os
import raven

RAVEN_CONFIG = {
    'dsn': 'Your DSN code',
    'release': raven.fetch_git_sha(os.path.abspath(os.pardir)),
}
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,
        },
    },
} 
INSTALLED_APPS = (
    'raven.contrib.django.raven_compat',
)

테스트 코드로 에러를 발생 시켜 보자

python manage.py raven test

아니면 일부러 아무 에러나 일으켜 보자. ALLOWED_HOSTS라던가.. 이렇게 에러 트래킹을 하면 된다.

Comments