Use Log4j con la ayuda de la biblioteca de registro en Python
-
Descripción general de
Log4j
y su importancia para usar -
Use
Log4j
con la ayuda de la bibliotecalogging
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")
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