Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/09/2011, 08:39
refreegrata
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 15 años, 8 meses
Puntos: 27
Excepciones, obtener archivo y número de línea

Hola lista. Tengo una duda. Quisiera capturar las excepciones gatilladas y volcarlas sobre un archivo log. Lo que no sé y no he podido encontrar es como obtener el número de línea y archivo desde el cuál se gatillo la excepción.

Esto es para una aplicación hecha con Django 1.3, Python 2.7. De momento tengo esto sobre una clase definida para actuar en el middleware:

Código:
class PruebaMiddleware:
    def obtenerUsuario(self, request):
        .....

    def process_exception(self, request, exception):
        import codecs
        from time import strftime
        from datetime import datetime
        try:          
            mensaje = u'fecha - hora:%s\ntipo: %s\nvalor: %s\nusuario: %s\n\n' % (datetime.today().strftime("%d/%m/%Y %H:%M:%S"),
                                                                                  type(exception).__name__,
                                                                                  exception.__unicode__(),
                                                                                  self.obtenerUsuario(request))  
            archivo = codecs.open(settings.ARCHIVO_LOG, 'a', 'utf-8')
            archivo.write(mensaje)
            archivo.close()
        except:
            pass
        return None
Y no sé si existe alguna manera de obtener la ruta al error. He intentado con "location" y "__location__", pero nada.
Mi idea, al final, es intentar pasar inicialmente los errores a la base de datos, pero si se provocase una excepción en ese intento pasarlo a un archivo log.

Como es algo simple no me he querido aventurar a inastalar django-sentry o algo así por que no me gustaría tocar tanto el servidor.

Saludos.