Inhalt

Wie man in Python Informationen in einer Protokolldatei speichert

Über Formate, ein wenig über Journaling und ein Python-Codebeispiel

Angenommen, Sie müssen einige Informationen über ein Ereignis und den Zeitpunkt, zu dem es eingetreten ist, in einer Protokolldatei speichern. Eines der am besten geeigneten Dateiformate dafür ist JSON.

Was ist JSON

JSON (JavaScript Object Notation) ist ein leichtgewichtiges Format, das überall zum Austausch von Daten verwendet wird. Es basiert auf einer Teilmenge der JavaScript-Sprache (der Art und Weise, wie JavaScript Objekte aufbaut). Wie im MDN vermerkt, ist ein Teil von JavaScript nicht JSON, und ein Teil von JSON ist nicht JavaScript.

Ein Beispiel dafür, wo dieses Format sehr häufig verwendet wird, sind die Antworten von Webdiensten. In den “alten” Zeiten verwendeten Webdienste XML als primäres Format für die Übertragung von Daten, aber seit JSON aufkam (das JSON-Format ist in RFC 4627 von Douglas Crockford definiert), ist es das bevorzugte Format geworden, weil es viel leichter ist.

Viele weitere Informationen finden Sie auf der offiziellen JSON Website und in dieser hervorragenden Antwort auf StackOverflow.

Protokollierungsfunktion

Hier ist eine Beispielfunktion zum Speichern von Informationen in einem Protokoll in Python. Wir rufen sie zum Zeitpunkt eines Ereignisses auf, und sie speichert alle notwendigen Informationen im Protokoll.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def write_to_log(file_object, event_name, description, value):
    """Nachricht in eine Protokolldatei schreiben"""
    event_time = str(datetime.datetime.now())
    data = OrderedDict()
    data['time'] = event_time
    data['event'] = event_name
    data['details'] = description
    data['value'] = value
    json.dump(data, file_object, separators=(', ', ':'))
    file_object.write('\n')

Beispiel für die Verwendung

Zunächst müssen wir die Protokolldatei öffnen, um ihr Informationen hinzuzufügen. Wir werden den Modus zur Erweiterung der Protokolldatei verwenden und dafür das Kontrollkästchen “a” - append.

1
LOG = open("log.txt", "a", encoding='utf-8')

Dann zeichnen wir Informationen über das Ereignis im Protokoll auf:

1
2
3
4
5
for i in range(5):
    EVENT_NAME = 'EVENT_' + str(i)
    WHAT_HAPPENED = 'HAPPENED_' + str(i)
    SOME_VALUE = i
    write_to_log(LOG, EVENT_NAME, WHAT_HAPPENED, SOME_VALUE)

Dadurch wird eine schön formatierte Protokolldatei erstellt:

1
2
3
4
5
{"time":"2019-11-03 13:38:56.822216", "event":"EVENT_0", "details":"HAPPENED_0", "value":0}
{"time":"2019-11-03 13:38:56.822317", "event":"EVENT_1", "details":"HAPPENED_1", "value":1}
{"time":"2019-11-03 13:38:56.822369", "event":"EVENT_2", "details":"HAPPENED_2", "value":2}
{"time":"2019-11-03 13:38:56.822410", "event":"EVENT_3", "details":"HAPPENED_3", "value":3}
{"time":"2019-11-03 13:38:56.822449", "event":"EVENT_4", "details":"HAPPENED_4", "value":4}

Ich hoffe, dies hilft Ihnen.