Logujemy błędy za pomocą sentry

Sentry jest strażnikiem naszej strony internetowej. Dokumentuje wszystkie niebezpieczne i nieporządane zachowania naszej aplikacji. Dzięki sentry jesteśmy w stanie szybko reagować na pojawiające się błędy, aby zapobiec im w przyszłości.

Rejestrujemy nowe konto i dodajemy naszą stronę. Po utworzeniu nowego projektu otrzymamy klucz prywatny "dsn" 

sentry.io

Instalujemy aplikację raven

pip install raven

dodajemy nową aplikację do INSTALLED_APPS w settings.py


INSTALLED_APPS = {
 'raven.contrib.django.raven_compat'
}
# dodajemy nasz nowo utworzony klucz prywatny
RAVEN_CONFIG = {
    'dsn': 'nasz_klucz_prywatny',
}

sprawdzamy, czy komunikacja między naszym serwisem a sentry działą prawidłowo

python manage.py raven test

 Integrujemy sentry z apką logging

Dodajemy słownik LOGGING w pliku settings.py


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', 
            'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler', 
        }, 
        'console': { 
            'level': 'DEBUG', 
            'class': 'logging.StreamHandler', 
            'formatter': 'verbose' 
        } 
    }, 
    'loggers': {
        'django.db.backends': { 
            'level': 'ERROR', 
            'handlers': ['console'], 
            'propagate': False, 
        }, 
        'raven': { 
            'level': 'WARNING', 
            'handlers': ['console'], 
            'propagate': False, 
        }, 
        'sentry.errors': { 
            'level': 'DEBUG', 
            'handlers': ['console'], 
            'propagate': False, 
        }, 
    }, 
}

Prosty przykład logowania błędu

Importujemy apkę logging

import logging
log = logging.getLogger(__name__)
# w miejscu, w którym chcemy dodać logowanie naszego błędu wpisujemy
log.error(u'Komunikat błędu.', exc_info=True, extra={
    'request': request, # możemy dodać inne zmienne, które chcemy przekazać do logu
}

Polecane linki

Dokumentacja Sentry

Komentarze