2009-08-08 7 views
5

Intento registrar excepciones en Python 2.5, pero no puedo hacerlo. Todas las funciones de formateo hacen algo más de lo que yo quiero.Convertir información de excepción de Python en una cadena para el registro

me ocurrió esto:

def logexception(type, value, traceback): 
    print traceback.format_exception(type, value, traceback) 

sys.excepthook = logexception 

pero rescata con un error de argumento cuando se le llama, aunque de acuerdo a la documentación que debería funcionar. ¿Alguien sabe cuál es el problema con esto o tiene otra solución adicional?

Respuesta

5

¿Por qué esa traceback argumento de tener un método format_exception al igual que la función en el módulo de rastreo cuyo nombre está usurpando, y si lo tuviera por qué requeriría que el método el mismo objeto sobre el que se llama para ser pasado como el último argumento también?

sospecho que lo que desea es dar el tercer argumento un nombre diferente, a fin de no ocultar el módulo de rastreo, dicen:

import sys 
import traceback 

def logexception(type, value, tb): 
    print traceback.format_exception(type, value, tb) 

sys.excepthook = logexception 

y deberían funcionar las cosas mucho mejor.

+0

Es embarazoso. Uno de esos errores no se puede detectar en su propio código, pero alguien más lo hace instantáneamente. :) Gracias. –

+2

Como envié la misma respuesta (un minuto después) eliminaré mi respuesta. En aras de la exhaustividad: dado que el tipo como argumento también sombrea una imagen incorporada, creo que también debería cambiarse a exc_type o lo que sea ... – ChristopheD

+0

Verdadero. Yo renombré eso también. Gracias. –

Cuestiones relacionadas