Analysieren einer Protokolldatei in Python

Vaibhav Vaibhav 10 Oktober 2023
Analysieren einer Protokolldatei in Python

Eine Protokolldatei enthält Informationen über die Ereignisse, die während der Ausführung eines Softwaresystems oder einer Anwendung auftreten. Zu diesen Ereignissen gehören Fehler, Anfragen von Benutzern, Bugs usw. Entwickler können diese Details über die Verwendung weiter scannen, um potenzielle Probleme mit dem System herauszufinden, neuere und bessere Lösungen zu implementieren und das Gesamtdesign zu verbessern. Protokolldateien können viel über die Sicherheit des Systems verraten, was Entwicklern hilft, das System oder die Anwendung zu verbessern.

Im Allgemeinen haben Einträge in einer Protokolldatei ein Format oder ein Muster. Ein Softwaresystem kann beispielsweise ein Format haben, das drei Dinge druckt: Zeitstempel, Protokollnachricht und Nachrichtentyp. Diese Formate können eine beliebige Menge an Informationen enthalten, die aus Gründen der Lesbarkeit und Verwaltung in einem gut formatierten Text strukturiert sind.

Um eine Analyse dieser Protokolldateien durchzuführen, kann jede Programmiersprache in Betracht gezogen werden. In diesem Artikel wird jedoch speziell darauf eingegangen, wie solche Protokolldateien mit Python analysiert werden können. Trotzdem bleibt die Theorie hinter dem Verfahren für alle Programmiersprachen gleich. Man kann den Python-Code leicht in jede andere Programmiersprache übersetzen, um die erforderliche Aufgabe auszuführen.

Analysieren einer Protokolldatei in Python

Wie oben erwähnt, haben Einträge in einer Protokolldatei ein bestimmtes Format. Dies bedeutet, dass wir dieses Format nutzen können, um die in eine Protokolldatei geschriebenen Informationen Zeile für Zeile zu analysieren. Versuchen wir dies anhand eines Beispiels zu verstehen.

Betrachten Sie das folgende Protokollformat, das für eine Webanwendung verwendet wird. Sie enthält vier wesentliche Angaben, nämlich Datum und Uhrzeit oder Zeitstempel (Format yyyy-mm-dd hh:mm:ss), die aufgerufene URL, die Art der Log-Meldung (Erfolg, Fehler etc.) , und die Protokollnachricht.

DateTime | URL | Log - Type | Log

Betrachten Sie nun eine Datei log.txt, die Protokolle im oben genannten Format enthält. Die Datei log.txt würde ungefähr so ​​aussehen.

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
...

Der folgende Python-Code liest diese Protokolldatei und speichert die Informationen in einem Dictionary. Eine Variable order speichert alle Dictionarieschlüssel in derselben Reihenfolge wie die eines einzelnen Protokolls. Da das Log-Formal ein | hat, können wir damit einen Log-String in Elemente aufteilen und diese nach Belieben weiter speichern.

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))

Ausgabe:

{
    "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"
}

Sobald die Informationen gelesen wurden, können wir jede weitere Operation darüber durchführen. Wir können es für zukünftige Analysen in einer Datenbank speichern, NumPy und Matplotlib importieren und einige Grafiken zeichnen, um die Informationen grafisch zu verstehen. Filtern Sie die Protokolle mit ERROR-Tags und scannen Sie die Fehler, mit denen die Benutzer konfrontiert sind, oder achten Sie auf verdächtige Aktivitäten oder Sicherheitsverletzungen, zum Beispiel Spamming oder unbefugte Zugriffe. Die Möglichkeiten sind endlos und es hängt davon ab, was die Entwickler oder Datenwissenschaftler versuchen, um aus den erhaltenen Daten zu lernen.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.