Registrar mensajes en la consola en Django
Cuando instalamos un conjunto de software en nuestra máquina, a menudo encontramos un archivo de registro o vemos algunos mensajes que se imprimen dentro de la consola de esa aplicación. Estos son mensajes de registro que brindan información sobre los eventos que ocurren en la aplicación, las tareas que el software está completando, los errores encontrados, las advertencias, etc. Estos mensajes ayudan a los desarrolladores de software a mejorar su aplicación y depurarla si los usuarios permiten que la aplicación comparta los informes de errores.
Cuando trabajamos con Django o cualquier otro marco para un proyecto, generalmente usamos declaraciones de impresión para depurar nuestras aplicaciones. Las declaraciones impresas son grandiosas; están integrados y son muy fáciles de usar. Pero podemos llevar esto al siguiente nivel si comenzamos a usar paquetes o bibliotecas dedicadas a este propósito. Estas bibliotecas nos permiten definir niveles para nuestros mensajes de registro e imprimir sin esfuerzo información adicional como números de línea y marcas de tiempo. Algunas bibliotecas incluso nos permiten agregar colores a nuestras declaraciones o mensajes de registro.
En este artículo, aprenderemos cómo registrar mensajes en la consola en proyectos de Django.
Mensajes de registro utilizando logging
de la biblioteca Python incorporada
Python viene con una biblioteca incorporada logging
, cuyo único propósito es ayudar a implementar un sistema de registro de eventos flexible. En este artículo, no repasaremos todo, sino que cubriremos solo lo básico y algunas cosas esenciales.
Cuando trabajamos con logging
, utilizamos un logger
para registrar mensajes en la consola. Como se mencionó anteriormente, los mensajes de registro tienen algunos niveles que indican el propósito de un mensaje de registro. Esta biblioteca tiene cinco de esos niveles, y cada nivel tiene un número de antigüedad adjunto. Por ejemplo, el nivel CRITICAL
tiene la antigüedad más alta de 50. DEBUG
tiene 10. INFO
, WARNING
y ERROR
tienen 20, 30 y 40, respectivamente.
DEBUG
: se utiliza para imprimir mensajes para depurar una aplicación.INFO
: se utiliza para imprimir mensajes generales como afirmaciones, confirmaciones y mensajes de éxito.WARNING
: Se utiliza para reportar advertencias, eventos inesperados debido a entradas, indicaciones de algunos problemas que puedan surgir en el futuro, etc.ERROR
: se utiliza para alertar sobre problemas graves que probablemente no detendrán la ejecución de la aplicación.CRITICAL
: se utiliza para alertar sobre problemas críticos que pueden dañar los datos del usuario, exponer los datos del usuario, obstaculizar la seguridad, detener algún servicio o tal vez finalizar la aplicación en sí.
La biblioteca logging
tiene funciones que podemos utilizar para registrar mensajes. Para demostrarlo, consulte el siguiente código:
import logging
logging.debug("Log message goes here.")
logging.info("Log message goes here.")
logging.warning("Log message goes here.")
logging.error("Log message goes here.")
logging.critical("Log message goes here.")
De forma predeterminada, el registrador no registra los mensajes de registro de nivel de debug
y de info
. Para habilitarlos, tenemos que definir un nivel para el registrador. El siguiente código hace lo mismo:
import logging
logging.basicConfig(level=logging.NOTSET) # Here
logging.debug("Log message goes here.")
logging.info("Log message goes here.")
logging.warning("Log message goes here.")
logging.error("Log message goes here.")
logging.critical("Log message goes here.")
Si el nivel se establece en INFO
, solo se imprimirán todos los niveles con antigüedad superior e igual a la de INFO
. El siguiente programa describe este proceso:
import logging
logging.basicConfig(level=logging.INFO) # Here
logging.debug("Log message goes here.")
logging.info("Log message goes here.")
logging.warning("Log message goes here.")
logging.error("Log message goes here.")
logging.critical("Log message goes here.")
El método basicConfig()
se puede utilizar para definir el nivel. En total, el parámetro level
puede aceptar seis valores.
logging.DEBUG
# 10logging.INFO
# 20registro.WARNING
# 30logging.ERROR
# 40registro.CRITICAL
# 50logging.NOTSET
# 0
Hay más parámetros que puede configurar; puede leer más sobre ellos aquí.
Para obtener más información, consulte esta lista:
filename
: el métodobasicConfig()
tiene un parámetro defilename
que se puede utilizar para establecer un nombre de archivo, en el que se deben registrar todos los mensajes. Cuando se especifica un nombre de archivo, los mensajes de registro se registran en este archivo en lugar de en la consola.filemode
- El métodobasicConfig()
tiene un parámetrofilemode
que se utiliza para definir el modo de apertura del archivo mencionado. De forma predeterminada, se establece en"a"
, que significaappend
. Por lo tanto, cada vez que ejecute el programa, se agregarán nuevos mensajes de registro a los mensajes antiguos.format
: el métodobasicConfig()
tiene un parámetro deformat
que se puede utilizar para formatear la estructura de los mensajes de registro. El formato predeterminado, que se ve así:<Level>:root:<Message>
, será sobrescrito por el nuevo formato.
Si desea leer más sobre esta biblioteca, consulte aquí.