Logzero es un paquete de Python que simplifica el log en Python 2 y 3. En este artículo revisaremos:
- ¿Que es el log?
- Por que la importancia del log
- Aplicaciones del log en diferentes industrias.
Logzero tiene diferentes características que facilitan el uso en proyectos Python. Algunas características son:
- Fácil registro en consola o archivo
- Proporciona un objeto logger Python estándar totalmente configurado
- Formato de colores específicos por nivel
- Compatible con Python 2 y 3
Instalación
Para instalar logzero con pip ejecute lo siguiente:
1 | pip install -U logzero |
Ejemplo básico
Empezaremos con un ejemplo básico. En un archivo python, realizamos el import de logzero y probaremos cuatro ejemplos diferentes del log:
1 2 3 4 5 6 7 | #import logger from logzero from logzero import logger logger.debug("hello") logger.info("info") logger.warning("warning") logger.error("error") |
La salida se presenta en colores y fácil de leer:
Como puede ver, cada nivel tiene su propio color. Esto significa que puede identificar el nivel fácilmente comprobando el color.
Escribir registros en un archivo
La mayoría de las veces, los usuarios de Python tienden a escribir registros en el archivo. Cuando el sistema se está ejecutando, puede guardar registros en el archivo y revisarlos para verificaciones de errores y propósitos de mantenimiento. También puede configurar un archivo para guardar todas las entradas de registro en logzero.
El método de archivo de registro nos ayudará a configurar el archivo de registro para guardar nuestras entradas de registro.
Ahora sus entradas de registro se registrarán en el archivo llamado my_logfile.log.
1 2 3 4 5 6 7 8 9 | #import logger and logfile from logzero import logger from logzero import logfile #set logfile path logfile('my_logfile.log') # Log messages logger.info("This log message saved in the log file") |
La salida en my_logfile.log contiene la etiqueta de nivel de registro (para el nivel de información etiquetado como «I»), fecha, hora, nombre de archivo de Python, número de línea y el mensaje en sí.
1 | [I 200409 23:49:59 demo:8] This log message saved in the log file |
Rotación de un archivo de registro
No necesita tener un solo archivo de registro que guarde todas las entradas de registro. Esto da como resultado un archivo de registro masivo que es intensivo para que el sistema se abra y cierre.
Puede usar los parámetros maxBytes y backupCount para permitir que el archivo se transfiera a un tamaño predeterminado. Cuando se va a exceder el tamaño, el archivo se cierra y un nuevo archivo se abre silenciosamente para la salida. El rollover ocurre cuando el archivo de registro actual tiene una longitud de casi MaxBytes. Si maxBytes o backupCount es cero, nunca se produce la sustitución.
En el ejemplo a continuación, hemos configurado los maxBytes para que sean 1000000 bytes (1 MB). Esto significa que cuando el tamaño excede de 1 MB, el archivo se cierra y se abre un nuevo archivo para guardar las entradas de registro. El número de copias de seguridad para mantener se establece en 3.
1 2 | # Set a rotating logfile logzero.logfile("my_logfile.log", maxBytes=1000000, backupCount=3) |
Establecer un nivel mínimo del log
El nivel de registro significa establecer el nivel de importancia de un mensaje de registro dado. También puede establecer un nivel de registro diferente para el controlador de archivos utilizando el argumento loglevel en el método logfile.
En el ejemplo a continuación, configuramos loglevel como warning . Esto significa que todas las entradas de registro por debajo del nivel de advertencia no se guardarán en un archivo de registro.
1 2 3 4 5 6 7 8 9 10 | #import logzero package from logzero import logger, logfile import logging # You can also set a different loglevel for the file handler logfile("my_logfile.log", loglevel=logging.WARNING) # Log messages logger.info("This log message saved in the log file") logger.warning("This log message saved in the log file") |
Establecer un formato personalizado
Depende de usted cómo desea que se formatee el registro. Puede incluir la fecha, la hora y el nivel de registro en su formato para saber cuándo se envió el registro y a qué nivel.
El siguiente ejemplo muestra cómo puede configurar el formato de los registros.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #import logzero package import logzero from logzero import logger, logfile import logging #set file path logfile("my_logfile.log") # Set a custom formatter my_formatter = logging.Formatter('%(filename)s - %(asctime)s - %(levelname)s: %(message)s'); logzero.formatter(my_formatter) # Log messages logger.info("This log message saved in the log file") logger.warning("This log message saved in the log file") |
En el ejemplo anterior, hemos configurado el formato de registro incluyendo nombre de archivo, fecha, hora, nombre de nivel de registro y mensaje.
Este es el resultado en my_logfile.log:
1 2 | demo.py - 2020–04–10 00:51:44,706 - INFO: This log message saved in the log file demo.py - 2020–04–10 00:51:44,707 - WARNING: This log message saved in the log file |
En Conclusión
En este artículo, hemos revisado conceptos básicos, junto con algunos ejemplos, de como usar el paquete Logzero con Python. Puede encontrar más información en la documentación de Logzero.
Este artículo se encuentra basado en How to Practice Logging in Python with Logzero.