Dieser Artikel bietet eine umfassende Anleitung zum Speichern von Protokollen in Python mithilfe des integrierten Logging-Moduls. Er erklärt, wie man eine Protokolldatei einrichtet, die Protokollierungsstufen konfiguriert und die Protokollformate anpasst, um den eigenen Bedürfnissen gerecht zu werden. Egal, ob du debuggst oder das Verhalten deiner Anwendung verfolgst, diese Techniken helfen dir, deine Protokolle effektiv zu verwalten und bessere Einblicke in deine Python-Anwendungen zu erhalten.
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.
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.
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.
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')
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.
LOG = open("log.txt", "a", encoding='utf-8')
Dann zeichnen wir Informationen über das Ereignis im Protokoll auf:
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:
{"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.
Eine Mail, sobald ein neuer Beitrag erscheint.