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.