Analizar un archivo de registro en Python
Un archivo de registro contiene información sobre los eventos que ocurren durante la ejecución de un sistema de software o una aplicación. Estos eventos incluyen errores, solicitudes hechas por los usuarios, errores, etc. Los desarrolladores pueden escanear más estos detalles sobre el uso para descubrir problemas potenciales con el sistema, implementar nuevas y mejores soluciones y mejorar el diseño general. Los archivos de registro pueden revelar mucho sobre la seguridad del sistema, lo que ayuda a los desarrolladores a mejorar el sistema o la aplicación.
Generalmente, las entradas dentro de un archivo de registro tienen un formato o patrón. Por ejemplo, un sistema de software puede tener un formato que imprima tres cosas: marca de tiempo, mensaje de registro y tipo de mensaje. Estos formatos pueden tener cualquier cantidad de información estructurada en un texto bien formateado para fines de legibilidad y administración.
Para realizar análisis sobre estos archivos de registro, se puede considerar cualquier lenguaje de programación. Pero este artículo hablará específicamente sobre cómo se pueden analizar dichos archivos de registro usando Python. Sin embargo, la teoría detrás del proceso sigue siendo la misma para todos los lenguajes de programación. Uno puede traducir fácilmente el código Python a cualquier otro lenguaje de programación para realizar la tarea requerida.
Analizar un archivo de registro en Python
Como se mencionó anteriormente, las entradas dentro de un archivo de registro tienen un formato específico. Esto significa que podemos aprovechar este formato para analizar la información escrita dentro de un archivo de registro línea por línea. Intentemos comprender esto con un ejemplo.
Considere el siguiente formato de registro que se utiliza para una aplicación web. Tiene cuatro detalles significativos, a saber, la fecha y hora o la marca de tiempo (formato aaaa-mm-dd hh:mm:ss
), la URL
a la que se accede, el tipo de mensaje de registro (éxito, error, etc.) y el mensaje de registro.
DateTime | URL | Log - Type | Log
Ahora, considere un archivo log.txt
que contiene registros en el formato mencionado anteriormente. El archivo log.txt
se vería así.
2021-10-26 10:26:44 | https://website.com/home | SUCCESS | Message
2021-10-26 10:26:54 | https://website.com/about | SUCCESS | Message
2021-10-26 10:27:01 | https://website.com/page | ERROR | Message
2021-10-26 10:27:03 | https://website.com/user/me | SUCCESS | Message
2021-10-26 10:27:04 | https://website.com/settings/ | ERROR | Message
...
El siguiente código de Python leerá este archivo de registro y almacenará la información dentro de un diccionario. Una variable order
almacena todas las claves del diccionario en el mismo orden que el de un solo registro. Dado que el log formal tiene un |
, podemos usarlo para dividir una cadena de log en elementos y almacenarlos como queramos.
import json
file_name = "log.txt"
file = open(file_name, "r")
data = []
order = ["date", "url", "type", "message"]
for line in file.readlines():
details = line.split("|")
details = [x.strip() for x in details]
structure = {key: value for key, value in zip(order, details)}
data.append(structure)
for entry in data:
print(json.dumps(entry, indent=4))
Salida
{
"date": "2021-10-20 10:26:44",
"url": "https://website.com/home",
"type": "SUCCESS",
"message": "Message",
}
{
"date": "2021-10-20 10:26:54",
"url": "https://website.com/about",
"type": "SUCCESS",
"message": "Message",
}
{
"date": "2021-10-20 10:27:01",
"url": "https://website.com/page",
"type": "ERROR",
"message": "Message",
}
{
"date": "2021-10-20 10:27:03",
"url": "https://website.com/user/me",
"type": "SUCCESS",
"message": "Message",
}
{
"date": "2021-10-20 10:27:04",
"url": "https://website.com/settings/",
"type": "ERROR",
"message": "Message",
}
Una vez que se lee la información, podemos realizar cualquier otra operación sobre ella. Podemos almacenarlo dentro de una base de datos para futuros análisis, importar NumPy
y Matplotlib
y trazar algunos gráficos para comprender la información de forma gráfica. Filtre los registros con etiquetas ERROR
y escanee los errores que enfrentan los usuarios, o tenga cuidado con alguna actividad sospechosa o brechas de seguridad, por ejemplo, spam o accesos no autorizados. Las oportunidades son infinitas y depende de lo que los desarrolladores o científicos de datos estén intentando aprender de los datos obtenidos.