Capítulo 8: Python excepcional
8.4 Registro en Python
El registro es una herramienta esencial y poderosa en tu caja de herramientas de programación que puede ayudarte a identificar y solucionar problemas en tu código. El módulo logging
incorporado de Python proporciona un marco flexible para emitir mensajes de registro desde programas Python.
Te permite registrar diferentes tipos de mensajes, como mensajes informativos, de advertencia y de error, y proporciona una forma para que las aplicaciones configuren diferentes controladores de registro y enrutan los mensajes de registro directamente a la consola, archivos, correo electrónico o ubicaciones personalizadas de manera flexible y configurable.
El módulo logging
se puede extender fácilmente para manejar mensajes de registro personalizados e integrarse con servicios de registro de terceros, lo que lo convierte en una herramienta muy versátil y útil para cualquier desarrollador de Python.
Ejemplo:
Primero, echemos un vistazo a un ejemplo de registro simple:
import logging
# By default, the logging module logs the messages with a severity level of WARNING or above.
# You can configure the logging module to log events of all levels if you want.
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
# These will not get logged because by default the severity level is WARNING
logging.info('This is an info message')
logging.debug('This is a debug message')
Esto producirá:
WARNING:root:This is a warning message
ERROR:root:This is an error message
CRITICAL:root:This is a critical message
El módulo de registro permite tanto el registro de diagnóstico (registrando los eventos que ocurren cuando se ejecuta el software) como el registro de auditoría (registrando los eventos que conducen a una operación). Puede rastrear cualquier cosa, desde información de depuración hasta información crítica sobre el tiempo de ejecución del programa.
Para configurar el registro, usamos la función logging.basicConfig(**kwargs)
. Esta función toma una variedad de argumentos para la configuración:
import logging
logging.basicConfig(filename='app.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')
logging.warning('This will get logged to a file')
Esto creará un archivo llamado 'app.log' en tu directorio actual y cualquier llamada de registro subsiguiente en tu código se enviará a ese archivo.
Hay muchas otras formas de personalizar la funcionalidad de logging
, incluyendo la diferenciación de mensajes de diferentes gravedades (DEBUG, INFO, WARNING, ERROR y CRITICAL) y escribir tus propios manejadores de registro personalizados. También puedes configurar el formato del registro para incluir detalles como la marca de tiempo, el número de línea y otros detalles.
Usar el módulo logging
de Python puede ser mucho más robusto que usar declaraciones de impresión en todo tu código, y es una práctica recomendada para cualquier proyecto de codificación serio. El manejo de excepciones y el registro son habilidades esenciales en el desarrollo de software, no solo para depurar durante el desarrollo, sino también para registrar cualquier problema que ocurra en el entorno de producción. El registro puede reducir significativamente el tiempo dedicado a la resolución de problemas y la depuración de código.
Recuerda usar el registro con prudencia. Registra solo la información que pueda ser útil. Registrar demasiados datos puede provocar problemas de rendimiento y puede ser costoso si usas una solución de gestión de registros. Un registro adecuado y eficiente facilitará mucho la vida tuya y de otros desarrolladores.
La biblioteca de registro proporciona varios niveles de gravedad de eventos en orden ascendente: DEBUG, INFO, WARNING, ERROR y CRITICAL.
Entendamos un poco más estos niveles:
- DEBUG: Información detallada, típicamente de interés solo al diagnosticar problemas.
- INFO: Confirmación de que las cosas están funcionando según lo esperado.
- WARNING: Una indicación de que algo inesperado ha ocurrido o puede ocurrir en el futuro cercano (por ejemplo, 'poco espacio en disco'). El software sigue funcionando según lo esperado.
- ERROR: Problema más grave que impidió que el software realizara una función.
- CRITICAL: Un error muy grave, que indica que el programa mismo puede ser incapaz de continuar ejecutándose.
Aquí tienes un ejemplo de uso de diferentes niveles:
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
Salida:
DEBUG:root:This is a debug message
INFO:root:This is an info message
WARNING:root:This is a warning message
ERROR:root:This is an error message
CRITICAL:root:This is a critical message
En el método basicConfig(**kwargs)
, puedes establecer el parámetro level
en el nivel de registro deseado. El registro raíz se establecerá en el nivel de gravedad especificado y todos los mensajes que tengan una gravedad mayor o igual a este nivel se mostrarán en la consola y se guardarán en un archivo de registro si se especifica.
Es crucial usar niveles de registro apropiados en tu aplicación. Puede ayudarte a comprender mejor el flujo de tu programa y descubrir cualquier anomalía que pueda ocurrir. El uso incorrecto de los niveles de registro (por ejemplo, registrar todos los mensajes con el nivel de error) puede llevar a registros poco claros, lo que dificulta la depuración.
8.4 Registro en Python
El registro es una herramienta esencial y poderosa en tu caja de herramientas de programación que puede ayudarte a identificar y solucionar problemas en tu código. El módulo logging
incorporado de Python proporciona un marco flexible para emitir mensajes de registro desde programas Python.
Te permite registrar diferentes tipos de mensajes, como mensajes informativos, de advertencia y de error, y proporciona una forma para que las aplicaciones configuren diferentes controladores de registro y enrutan los mensajes de registro directamente a la consola, archivos, correo electrónico o ubicaciones personalizadas de manera flexible y configurable.
El módulo logging
se puede extender fácilmente para manejar mensajes de registro personalizados e integrarse con servicios de registro de terceros, lo que lo convierte en una herramienta muy versátil y útil para cualquier desarrollador de Python.
Ejemplo:
Primero, echemos un vistazo a un ejemplo de registro simple:
import logging
# By default, the logging module logs the messages with a severity level of WARNING or above.
# You can configure the logging module to log events of all levels if you want.
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
# These will not get logged because by default the severity level is WARNING
logging.info('This is an info message')
logging.debug('This is a debug message')
Esto producirá:
WARNING:root:This is a warning message
ERROR:root:This is an error message
CRITICAL:root:This is a critical message
El módulo de registro permite tanto el registro de diagnóstico (registrando los eventos que ocurren cuando se ejecuta el software) como el registro de auditoría (registrando los eventos que conducen a una operación). Puede rastrear cualquier cosa, desde información de depuración hasta información crítica sobre el tiempo de ejecución del programa.
Para configurar el registro, usamos la función logging.basicConfig(**kwargs)
. Esta función toma una variedad de argumentos para la configuración:
import logging
logging.basicConfig(filename='app.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')
logging.warning('This will get logged to a file')
Esto creará un archivo llamado 'app.log' en tu directorio actual y cualquier llamada de registro subsiguiente en tu código se enviará a ese archivo.
Hay muchas otras formas de personalizar la funcionalidad de logging
, incluyendo la diferenciación de mensajes de diferentes gravedades (DEBUG, INFO, WARNING, ERROR y CRITICAL) y escribir tus propios manejadores de registro personalizados. También puedes configurar el formato del registro para incluir detalles como la marca de tiempo, el número de línea y otros detalles.
Usar el módulo logging
de Python puede ser mucho más robusto que usar declaraciones de impresión en todo tu código, y es una práctica recomendada para cualquier proyecto de codificación serio. El manejo de excepciones y el registro son habilidades esenciales en el desarrollo de software, no solo para depurar durante el desarrollo, sino también para registrar cualquier problema que ocurra en el entorno de producción. El registro puede reducir significativamente el tiempo dedicado a la resolución de problemas y la depuración de código.
Recuerda usar el registro con prudencia. Registra solo la información que pueda ser útil. Registrar demasiados datos puede provocar problemas de rendimiento y puede ser costoso si usas una solución de gestión de registros. Un registro adecuado y eficiente facilitará mucho la vida tuya y de otros desarrolladores.
La biblioteca de registro proporciona varios niveles de gravedad de eventos en orden ascendente: DEBUG, INFO, WARNING, ERROR y CRITICAL.
Entendamos un poco más estos niveles:
- DEBUG: Información detallada, típicamente de interés solo al diagnosticar problemas.
- INFO: Confirmación de que las cosas están funcionando según lo esperado.
- WARNING: Una indicación de que algo inesperado ha ocurrido o puede ocurrir en el futuro cercano (por ejemplo, 'poco espacio en disco'). El software sigue funcionando según lo esperado.
- ERROR: Problema más grave que impidió que el software realizara una función.
- CRITICAL: Un error muy grave, que indica que el programa mismo puede ser incapaz de continuar ejecutándose.
Aquí tienes un ejemplo de uso de diferentes niveles:
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
Salida:
DEBUG:root:This is a debug message
INFO:root:This is an info message
WARNING:root:This is a warning message
ERROR:root:This is an error message
CRITICAL:root:This is a critical message
En el método basicConfig(**kwargs)
, puedes establecer el parámetro level
en el nivel de registro deseado. El registro raíz se establecerá en el nivel de gravedad especificado y todos los mensajes que tengan una gravedad mayor o igual a este nivel se mostrarán en la consola y se guardarán en un archivo de registro si se especifica.
Es crucial usar niveles de registro apropiados en tu aplicación. Puede ayudarte a comprender mejor el flujo de tu programa y descubrir cualquier anomalía que pueda ocurrir. El uso incorrecto de los niveles de registro (por ejemplo, registrar todos los mensajes con el nivel de error) puede llevar a registros poco claros, lo que dificulta la depuración.
8.4 Registro en Python
El registro es una herramienta esencial y poderosa en tu caja de herramientas de programación que puede ayudarte a identificar y solucionar problemas en tu código. El módulo logging
incorporado de Python proporciona un marco flexible para emitir mensajes de registro desde programas Python.
Te permite registrar diferentes tipos de mensajes, como mensajes informativos, de advertencia y de error, y proporciona una forma para que las aplicaciones configuren diferentes controladores de registro y enrutan los mensajes de registro directamente a la consola, archivos, correo electrónico o ubicaciones personalizadas de manera flexible y configurable.
El módulo logging
se puede extender fácilmente para manejar mensajes de registro personalizados e integrarse con servicios de registro de terceros, lo que lo convierte en una herramienta muy versátil y útil para cualquier desarrollador de Python.
Ejemplo:
Primero, echemos un vistazo a un ejemplo de registro simple:
import logging
# By default, the logging module logs the messages with a severity level of WARNING or above.
# You can configure the logging module to log events of all levels if you want.
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
# These will not get logged because by default the severity level is WARNING
logging.info('This is an info message')
logging.debug('This is a debug message')
Esto producirá:
WARNING:root:This is a warning message
ERROR:root:This is an error message
CRITICAL:root:This is a critical message
El módulo de registro permite tanto el registro de diagnóstico (registrando los eventos que ocurren cuando se ejecuta el software) como el registro de auditoría (registrando los eventos que conducen a una operación). Puede rastrear cualquier cosa, desde información de depuración hasta información crítica sobre el tiempo de ejecución del programa.
Para configurar el registro, usamos la función logging.basicConfig(**kwargs)
. Esta función toma una variedad de argumentos para la configuración:
import logging
logging.basicConfig(filename='app.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')
logging.warning('This will get logged to a file')
Esto creará un archivo llamado 'app.log' en tu directorio actual y cualquier llamada de registro subsiguiente en tu código se enviará a ese archivo.
Hay muchas otras formas de personalizar la funcionalidad de logging
, incluyendo la diferenciación de mensajes de diferentes gravedades (DEBUG, INFO, WARNING, ERROR y CRITICAL) y escribir tus propios manejadores de registro personalizados. También puedes configurar el formato del registro para incluir detalles como la marca de tiempo, el número de línea y otros detalles.
Usar el módulo logging
de Python puede ser mucho más robusto que usar declaraciones de impresión en todo tu código, y es una práctica recomendada para cualquier proyecto de codificación serio. El manejo de excepciones y el registro son habilidades esenciales en el desarrollo de software, no solo para depurar durante el desarrollo, sino también para registrar cualquier problema que ocurra en el entorno de producción. El registro puede reducir significativamente el tiempo dedicado a la resolución de problemas y la depuración de código.
Recuerda usar el registro con prudencia. Registra solo la información que pueda ser útil. Registrar demasiados datos puede provocar problemas de rendimiento y puede ser costoso si usas una solución de gestión de registros. Un registro adecuado y eficiente facilitará mucho la vida tuya y de otros desarrolladores.
La biblioteca de registro proporciona varios niveles de gravedad de eventos en orden ascendente: DEBUG, INFO, WARNING, ERROR y CRITICAL.
Entendamos un poco más estos niveles:
- DEBUG: Información detallada, típicamente de interés solo al diagnosticar problemas.
- INFO: Confirmación de que las cosas están funcionando según lo esperado.
- WARNING: Una indicación de que algo inesperado ha ocurrido o puede ocurrir en el futuro cercano (por ejemplo, 'poco espacio en disco'). El software sigue funcionando según lo esperado.
- ERROR: Problema más grave que impidió que el software realizara una función.
- CRITICAL: Un error muy grave, que indica que el programa mismo puede ser incapaz de continuar ejecutándose.
Aquí tienes un ejemplo de uso de diferentes niveles:
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
Salida:
DEBUG:root:This is a debug message
INFO:root:This is an info message
WARNING:root:This is a warning message
ERROR:root:This is an error message
CRITICAL:root:This is a critical message
En el método basicConfig(**kwargs)
, puedes establecer el parámetro level
en el nivel de registro deseado. El registro raíz se establecerá en el nivel de gravedad especificado y todos los mensajes que tengan una gravedad mayor o igual a este nivel se mostrarán en la consola y se guardarán en un archivo de registro si se especifica.
Es crucial usar niveles de registro apropiados en tu aplicación. Puede ayudarte a comprender mejor el flujo de tu programa y descubrir cualquier anomalía que pueda ocurrir. El uso incorrecto de los niveles de registro (por ejemplo, registrar todos los mensajes con el nivel de error) puede llevar a registros poco claros, lo que dificulta la depuración.
8.4 Registro en Python
El registro es una herramienta esencial y poderosa en tu caja de herramientas de programación que puede ayudarte a identificar y solucionar problemas en tu código. El módulo logging
incorporado de Python proporciona un marco flexible para emitir mensajes de registro desde programas Python.
Te permite registrar diferentes tipos de mensajes, como mensajes informativos, de advertencia y de error, y proporciona una forma para que las aplicaciones configuren diferentes controladores de registro y enrutan los mensajes de registro directamente a la consola, archivos, correo electrónico o ubicaciones personalizadas de manera flexible y configurable.
El módulo logging
se puede extender fácilmente para manejar mensajes de registro personalizados e integrarse con servicios de registro de terceros, lo que lo convierte en una herramienta muy versátil y útil para cualquier desarrollador de Python.
Ejemplo:
Primero, echemos un vistazo a un ejemplo de registro simple:
import logging
# By default, the logging module logs the messages with a severity level of WARNING or above.
# You can configure the logging module to log events of all levels if you want.
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
# These will not get logged because by default the severity level is WARNING
logging.info('This is an info message')
logging.debug('This is a debug message')
Esto producirá:
WARNING:root:This is a warning message
ERROR:root:This is an error message
CRITICAL:root:This is a critical message
El módulo de registro permite tanto el registro de diagnóstico (registrando los eventos que ocurren cuando se ejecuta el software) como el registro de auditoría (registrando los eventos que conducen a una operación). Puede rastrear cualquier cosa, desde información de depuración hasta información crítica sobre el tiempo de ejecución del programa.
Para configurar el registro, usamos la función logging.basicConfig(**kwargs)
. Esta función toma una variedad de argumentos para la configuración:
import logging
logging.basicConfig(filename='app.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')
logging.warning('This will get logged to a file')
Esto creará un archivo llamado 'app.log' en tu directorio actual y cualquier llamada de registro subsiguiente en tu código se enviará a ese archivo.
Hay muchas otras formas de personalizar la funcionalidad de logging
, incluyendo la diferenciación de mensajes de diferentes gravedades (DEBUG, INFO, WARNING, ERROR y CRITICAL) y escribir tus propios manejadores de registro personalizados. También puedes configurar el formato del registro para incluir detalles como la marca de tiempo, el número de línea y otros detalles.
Usar el módulo logging
de Python puede ser mucho más robusto que usar declaraciones de impresión en todo tu código, y es una práctica recomendada para cualquier proyecto de codificación serio. El manejo de excepciones y el registro son habilidades esenciales en el desarrollo de software, no solo para depurar durante el desarrollo, sino también para registrar cualquier problema que ocurra en el entorno de producción. El registro puede reducir significativamente el tiempo dedicado a la resolución de problemas y la depuración de código.
Recuerda usar el registro con prudencia. Registra solo la información que pueda ser útil. Registrar demasiados datos puede provocar problemas de rendimiento y puede ser costoso si usas una solución de gestión de registros. Un registro adecuado y eficiente facilitará mucho la vida tuya y de otros desarrolladores.
La biblioteca de registro proporciona varios niveles de gravedad de eventos en orden ascendente: DEBUG, INFO, WARNING, ERROR y CRITICAL.
Entendamos un poco más estos niveles:
- DEBUG: Información detallada, típicamente de interés solo al diagnosticar problemas.
- INFO: Confirmación de que las cosas están funcionando según lo esperado.
- WARNING: Una indicación de que algo inesperado ha ocurrido o puede ocurrir en el futuro cercano (por ejemplo, 'poco espacio en disco'). El software sigue funcionando según lo esperado.
- ERROR: Problema más grave que impidió que el software realizara una función.
- CRITICAL: Un error muy grave, que indica que el programa mismo puede ser incapaz de continuar ejecutándose.
Aquí tienes un ejemplo de uso de diferentes niveles:
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
Salida:
DEBUG:root:This is a debug message
INFO:root:This is an info message
WARNING:root:This is a warning message
ERROR:root:This is an error message
CRITICAL:root:This is a critical message
En el método basicConfig(**kwargs)
, puedes establecer el parámetro level
en el nivel de registro deseado. El registro raíz se establecerá en el nivel de gravedad especificado y todos los mensajes que tengan una gravedad mayor o igual a este nivel se mostrarán en la consola y se guardarán en un archivo de registro si se especifica.
Es crucial usar niveles de registro apropiados en tu aplicación. Puede ayudarte a comprender mejor el flujo de tu programa y descubrir cualquier anomalía que pueda ocurrir. El uso incorrecto de los niveles de registro (por ejemplo, registrar todos los mensajes con el nivel de error) puede llevar a registros poco claros, lo que dificulta la depuración.