¿Cómo registro una excepción en el nivel de advertencia o información con rastreo utilizando el marco de registro de Python?

2 minutos de lectura

avatar de usuario
Morten Holdflod Moller

Usando algo como esto:

try:
   # Something...
except Exception as excep:
   logger = logging.getLogger("component")
   logger.warning("something raised an exception: " + excep)
   logger.info("something raised an exception: " + excep)

Preferiría no tenerlo en el nivel de error porque en mi caso especial no es un error.

avatar de usuario
douglas leeder

Desde el documentación de registro:

Hay tres argumentos de palabra clave en kwargs que son inspeccionados: exc_info, stack_infoy extra.

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

Así que hazlo:

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

  • Tenga en cuenta que los documentos no mencionan esto explícitamente para información, advertencia, error, etc. Simplemente dicen “Los argumentos se interpretan como para depurar ()”. — Por eso, si necesita volver a esto más tarde, ahí es donde debe buscar la descripción anterior de este comportamiento.

    – Brian Peterson

    12 de junio de 2018 a las 20:11

Aquí hay uno que funciona (python 2.6.5).

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

avatar de usuario
benyamin jafari

Puedes probar esto:

from logging import getLogger

logger = getLogger('warning')

try:
    # Somethings that is wrong.

except Exception as exp:
    logger.warning("something raised an exception: " , exc_info=True)
    logger.warning("something raised an exception: {}".format(exp))  # another way

  • IIRC, estos no harán lo mismo. La primera forma registra un seguimiento de pila, la segunda forma registra el nombre de la clase de excepción para la excepción que ocurrió. Eso es muy diferente.

    – Brian Peterson

    12 jun 2018 a las 20:04


  • @BrianPeterson El propósito de la pregunta es imprimir exp. ambos métodos de registro mencionados cumplen con esto. Lo probé ahora.

    – Benyamín Jafari

    12/06/2018 a las 20:25

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad