2012-05-30 21 views
7

i conseguido instalar centinela éxito y puedo ver la interfaz de servicio web centinela en localhost y haciendo unCómo usar centinela/cuervo en las vistas de Django

raven test http://jsifslkdjfklsdfjklsdjfklMYCODE 

obras, las pruebas se muestra en la interfaz.

El problema es que no puedo encontrar ningún ejemplo o documentación sobre qué debo poner exactamente en mis vistas y mi configuración.

Yo sé que tengo que añadir a mi INSTALLED_APPS

'centinela', 'raven.contrib.django',

y también añadí

SENTRY_DNS = 'http://jsifslkdjfklsdfjklsdjfklMYCODE' 

aparece esta siguientes dos líneas en los documentos, pero no dice dónde van

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

I tri ed en settings.py pero todavía no puedo obtener mis vistas para registrar nada. También he añadido este

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

Y en mis puntos de vista he añadido esto:

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)) 

no tengo otro código relacionado con el registro, aparte de lo que se ve aquí, lo que me estoy perdiendo?

Respuesta

1

tuve que usar esta monstruosidad en mi 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:eb46a6d724df4327a8cc04[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) 

Y en mis puntos de vista que pueda usar un simple

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)) 

He intentado muchas configuraciones.

7

Su registrador 'raven' no está usando realmente el controlador centinela, sino que solo está escribiendo en 'consola'. Tenía el mismo problema. La documentación para cuervo/centinela carece de un buen escritor.

cambio de su registrador de cuervo a:

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

y asegúrese de que usted lo usa como registrador:

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

El registrador de 'cuervo' se refiere al paquete de cuervo, y me gustaría presumir que se trata de poner allí para que los errores internos del cuervo no se envíen de nuevo a cuervo, lo que resulta en un ciclo infinito. Debe crear su propio registrador 'myapp' que tenga su propia entrada en settings.py LOGGING. – joerick

Cuestiones relacionadas