Use Log4j con la ayuda de la biblioteca de registro en Python

Salman Mehmood 8 octubre 2023
  1. Descripción general de Log4j y su importancia para usar
  2. Use Log4j con la ayuda de la biblioteca logging en Python
Use Log4j con la ayuda de la biblioteca de registro en Python

Este artículo explica qué es log4j, cómo funciona y por qué deberíamos usarlo. También veremos cómo usar log4j dentro del lenguaje de programación Python con la ayuda de la biblioteca logging.

Descripción general de Log4j y su importancia para usar

El log4j es una pieza de software aprovechada por los programadores para ayudarlos cuando están registrando datos en su aplicación. Y, lograr datos significa llevar un diario de las actividades o acciones realizadas en la aplicación.

Podemos usar log4j por razones de seguridad, como mirar las distintas autenticaciones. Pero también podría ser para mantener un registro de las cosas que sucedieron en la aplicación con fines de depuración.

O para saber en general lo que ha estado haciendo la aplicación. Por ejemplo, log4j es un marco en el lenguaje de programación Java que es una aplicación semiconstruida.

De manera similar, en Python, usamos un módulo de registro en lugar de log4j. registro es un proceso de registro de acciones y estados de la aplicación en una interfaz secundaria. En otras palabras, escriba las acciones de su programa en un archivo, pero ¿cómo comienza a iniciar sesión?

Bueno, necesitas familiarizarte con los niveles de registro. Cada biblioteca de registro le permite bloquear información en un cierto nivel. Hay cinco niveles principales de registro que debe conocer.

Niveles Descripción
debug El nivel de depuración se utiliza durante el proceso de desarrollo o la corrección de errores y la resolución de problemas. Toda la información específica del desarrollador va por debajo de este nivel.
info El nivel de info se utiliza para registrar cualquier operación predeterminada importante de su programa, como acciones de visualización predeterminadas del usuario o del sistema.
warning El nivel de advertencia se utiliza para registrar eventos que podrían convertirse en un error a largo plazo. Se supone que este nivel de registro le ayudará a localizar errores.
error El nivel de error se usa para anotar errores y los errores son errores que pueden afectar la ejecución del programa de alguna manera incorrecta.
critical El nivel crítico es el día del juicio final; el programa está muerto o severamente dañado.

Use Log4j con la ayuda de la biblioteca logging en Python

Ahora solo vamos a ejecutar un código básico simple, y no existe tal lógica, pero queremos mostrarle algo de comprensión, por ejemplo, cómo puede escribir todos los registros dentro de un archivo.

Pasemos al código y primero configuremos el sistema de registro, llamemos al método basicConfig() y pasemos un nombre de archivo usando el parámetro filename. Python escribirá todos los mensajes de registro en este archivo; si no existe, Python lo creará.

El siguiente parámetro es modo de archivo, lo que significa que el modo de archivo significa si es un modo de adición al modo de escritura o lo que sea que ponga allí, y de forma predeterminada, el archivo se creará en modo de adición. El siguiente es el format que representa mucha información como asctime, levelname y message.

asctime básicamente muestra qué tipo de tiempo está imprimiendo dentro de este archivo de texto en particular con respecto a los registros. El segundo valor del parámetro es algo llamado levelname; este parámetro nos muestra qué tipo de error ocurrió durante la ejecución.

El mensaje son todos los mensajes que intentamos imprimir dentro de ese mensaje de registro. Estamos usando datefmt; este parámetro imprimirá la hora en un orden específico.

La función basicConfig() tiene un atributo diferente, podemos leer sobre todos los atributos desde aquí.

import logging

logging.basicConfig(
    filename="demo.txt",
    filemode="a",
    format="%(asctime)s %(levelname)s-%(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
)

Ahora hemos escrito una lógica simple donde comparamos el percentil con algunos números y agregamos algunos registros dentro del archivo de texto.

for i in range(0, 15):
    if i % 2 == 0:
        logging.error("Log error message")
    elif i % 3 == 0:
        logging.warning("Log warning message")
    elif i % 5 == 0:
        logging.debug("Log debug message")
    elif i % 7 == 0:
        logging.critical("Log critical message")
    else:
        logging.info("Log info message")

Producción :

2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 WARNING-Log warning message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 CRITICAL-Log critical message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 WARNING-Log warning message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message

Después de ejecutar el programa, podemos notar que los registros info y debug no se agregan dentro del archivo de texto porque, de forma predeterminada, levelname llama error y los niveles error no muestran info y debug.

Sin embargo, podemos usar otros niveles usando el parámetro level mientras pasamos logging.DEBUG.

level = logging.DEBUG

Ahora, si ejecutamos y abrimos el archivo demo.txt, veremos todos los mensajes de registro, pero si actualizamos el nivel de registro a logging.ERROR, veremos los mensajes de error y crítico.

2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 WARNING-Log warning message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 DEBUG-Log debug message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 CRITICAL-Log critical message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 WARNING-Log warning message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message

Tomemos un problema común donde vamos a dividir cualquier número por cero. Para determinar esta operación utilizaremos el bloque try.

Si la operación falla, entraremos en el bloque excepto y mostraremos el error de registro.

try:
    1 / 0
except:
    logging.error("Log zero division error occurs")

Producción :

2022-09-02 00:29:48 ERROR-Log zero division error occurs

Es una parte esencial de un proyecto porque probablemente tenga que escribir este tipo de mecanismo de registro siempre que esté trabajando en un proyecto.

Código Python completo:

import logging

logging.basicConfig(
    filename="demo.txt",
    filemode="w",
    format="%(asctime)s %(levelname)s-%(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
    level=logging.DEBUG,
)

# for i in range(0,15):
#     if i%2==0:
#         logging.error('Log error message')
#     elif i%3==0:
#         logging.warning('Log warning message')
#     elif i%5==0:
#         logging.debug('Log debug message')
#     elif i%7==0:
#         logging.critical('Log critical message')
#     else:
#         logging.info('Log info message')

try:
    1 / 0
except:
    logging.error("Log zero division error occurs")
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Artículo relacionado - Python Logging