2008-10-10 3 views

Respuesta

46

Desde el logging documentation:

Hay tres argumentos clave en kwargs inspeccionadas: exc_info, stack_info y extra.

Si exc_info no se evalúa como falso, provoca que se agregue información de excepción al mensaje de registro. Si se proporciona una tupla de excepción (en el formato devuelto por sys.exc_info()) o una instancia de excepción, se utiliza; de lo contrario, se llama al sys.exc_info() para obtener la información de excepción.

también lo hacen:

logger.warning("something raised an exception:", exc_info=True) 
-2

Intente utilizar Logger.exception.

Logger.exception() crea un mensaje de registro similar al Logger.error(). La diferencia es que Logger.exception() descarga un seguimiento de pila junto con él. Llamar a este método solo desde un controlador de excepción .

+10

Creo que la OP dijo que no quería que se registra en el error de nivel. – fholo

-5

Use Logger.exception().

try: 
    #Something... 
except BaseException, excep: 
    logger = logging.getLogger("component") 
    logger.exception("something raised an exception") 
-3

Está bastante bien explicado here.

Sin embargo, estás bastante cerca. Tiene la opción de usar sólo el valor por defecto con

logging.warning("something raised an exception: " + excep) 

O usted puede seguir algunos de los ejemplos en la página enlazada y se vuelven más sofisticados con múltiples destinos y niveles de filtro.

+1

Eso no registrará la trazabilidad, sin embargo; utiliza logging.exception(). –

+2

logging.exception pone el mensaje en el nivel de "error", que el OP no desea. –

-1

En algunos casos, es posible que desee utilizar la biblioteca warnings. Puede tener un control muy detallado sobre cómo se muestran sus advertencias.

4

Aquí está uno que funciona (Python 2.6.5).

logger.critical("caught exception, traceback =", exc_info=True) 
-1

que era capaz de mostrar los mensajes de registro en un bloque de excepción con el siguiente fragmento de código:

# basicConfig have to be the first statement 
logging.basicConfig(level=logging.INFO) 
logger = logging.getLogger("componet") 
try: 
    raise BaseException 
except BaseException: 
    logger.warning("something raised an exception: ",exc_info=True) 
    logger.info("something raised an exception: " ,exc_info=True) 
Cuestiones relacionadas