2012-05-30 9 views
7

sono riuscito a installare sentinella con successo e posso vedere l'interfaccia webservice sentinella a localhost e facendo unCome utilizzare sentinella/corvo in vista Django

raven test http://jsifslkdjfklsdfjklsdjfklMYCODE 

opere, i test si presenta nell'interfaccia.

Il problema è che non riesco a trovare alcun esempio o documentazione su cosa esattamente dovrei mettere sui miei punti di vista e le mie impostazioni.

So che devo aggiungere al mio INSTALLED_APPS

'sentinella', 'raven.contrib.django',

E ho anche aggiunto

SENTRY_DNS = 'http://jsifslkdjfklsdfjklsdjfklMYCODE' 

comparirà questa due righe successive nei documenti ma non dice dove vanno

from raven.contrib.django.models import client 
client.captureException() 

I tri ed in settings.py ma ancora non riesco a ottenere le mie viste per registrare nulla. Ho anche aggiunto questo

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

E nel mio punto di vista ho aggiunto questo:

import logging 
logger = logging.getLogger() 

def home(request,template_name): 
    logger.error('There was some crazy error lol', exc_info=True, extra={'request': request, }) 
    return render_to_response(template_name,context, context_instance=RequestContext(request)) 

non ho altro codice relative alla registrazione oltre a quello che vedete qui, cosa mi manca?

risposta

1

ho dovuto usare questa mostruosità sul mio settings.py:

import logging 
# from raven.contrib.django.handlers import SentryHandler 
from raven.handlers.logging import SentryHandler 

logging.getLogger().setLevel(logging.INFO) 
logger = logging.getLogger()# ensure we havent already registered the handler 
handler = SentryHandler('http://13d06dad246d4fe6a180ef9b15151a13:[email protected]/1') 
logger.addHandler(handler) 
# Add StreamHandler to sentry's default so you can catch missed exceptions 
logger = logging.getLogger('sentry.errors') 
logger.propagate = False 
logger.addHandler(logging.StreamHandler()) 


from raven.conf import setup_logging 
setup_logging(handler) 

E nel mio punto di vista posso usare un semplice

import logging 
logger = logging.getLogger(__name__) 
def home(request,context={},template_name=None): 
    logger.info(str(request), exc_info=True) 
    return render_to_response(template_name,context, context_instance=RequestContext(request)) 

ho provato molte impostazioni.

7

Il tuo logger "raven" non sta effettivamente utilizzando il gestore di sentinella, ma scrive solo su "console". Aveva lo stesso problema. La documentazione per il corvo/sentinella manca di un buon scrittore.

cambiare la vostra Raven logger a:

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

e assicurarsi lo si utilizza come registratore:

logger = logging.getLogger('raven') 
+7

Il logger 'corvo' si riferisce al pacchetto Raven, e io presumo che è messo lì in modo che gli errori interni del corvo non vengano rispediti al corvo, risultando in un ciclo infinito. Dovresti creare la "miapp" del registratore che ha la propria voce in settings.py LOGGING. – joerick

Problemi correlati