Configuración de salidas de registro (logging)
Además de establecer niveles de registro, el módulo logging en Python te permite configurar los destinos de salida para tus mensajes de registro. Por defecto, los mensajes de registro se envían a la consola (es decir, sys.stderr), pero puedes redirigirlos a otros destinos, como archivos, sockets de red o incluso manejadores personalizados.
A continuación, se muestra un ejemplo de cómo configurar el registro para escribir mensajes en un archivo:
import logging
## Configure logging to write to a file
logging.basicConfig(filename='app.log', level=logging.INFO)
## Log messages at different levels
logging.debug("This is a debug message.")
logging.info("This is an informational message.")
logging.warning("This is a warning message.")
logging.error("This is an error message.")
logging.critical("This is a critical message.")
En este ejemplo, se utiliza la función logging.basicConfig() para especificar el archivo de salida (filename='app.log') y el nivel de registro (level=logging.INFO). Todos los mensajes de registro con un nivel de gravedad de INFO o superior se escribirán en el archivo app.log.
También puedes configurar múltiples manejadores para enviar mensajes de registro a diferentes destinos simultáneamente. Por ejemplo, es posible que desees enviar mensajes críticos a un archivo mientras se muestran mensajes informativos y de advertencia en la consola. Aquí tienes un ejemplo:
import logging
## Configure logging to write to a file and the console
file_handler = logging.FileHandler('app.log')
console_handler = logging.StreamHandler()
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s %(levelname)s: %(message)s',
handlers=[file_handler, console_handler]
)
## Log messages at different levels
logging.debug("This is a debug message.")
logging.info("This is an informational message.")
logging.warning("This is a warning message.")
logging.error("This is an error message.")
logging.critical("This is a critical message.")
En este ejemplo, se crean dos manejadores: file_handler para escribir registros en un archivo y console_handler para mostrar registros en la consola. Luego, se utiliza la función logging.basicConfig() para configurar el sistema de registro para utilizar ambos manejadores, especificando el formato y el nivel de registro.
Al personalizar las salidas de registro, puedes asegurarte de que la información de registro de tu aplicación se dirija a los destinos más adecuados, lo que facilita el monitoreo, el análisis y la resolución de problemas del comportamiento de tu aplicación.