Protokollieren von Nachrichten in der Konsole in Django
Wenn wir eine Reihe von Software auf unserem Computer installieren, finden wir oft eine Protokolldatei oder sehen einige Nachrichten, die in der Konsole dieser Anwendung gedruckt werden. Dies sind Protokollnachrichten, die Informationen über die in der Anwendung auftretenden Ereignisse, die von der Software ausgeführten Aufgaben, aufgetretene Fehler, Warnungen usw. enthalten. Diese Nachrichten helfen Softwareentwicklern, ihre Anwendung zu verbessern und Fehler zu beheben, wenn Benutzer der Anwendung erlauben, die Fehlerberichte zu teilen.
Wenn wir mit Django oder einem anderen Framework für ein Projekt arbeiten, verwenden wir im Allgemeinen print-Anweisungen, um unsere Anwendungen zu debuggen. Print-Anweisungen sind großartig; sie sind eingebaut und sehr mühelos zu bedienen. Aber wir können diese Sache auf die nächste Stufe bringen, wenn wir anfangen, Pakete oder Bibliotheken zu verwenden, die für diesen Zweck bestimmt sind. Mit diesen Bibliotheken können wir Ebenen für unsere Protokollnachrichten definieren und mühelos zusätzliche Informationen wie Zeilennummern und Zeitstempel drucken. Einige Bibliotheken ermöglichen es uns sogar, unseren Protokollanweisungen oder Nachrichten Farben hinzuzufügen.
In diesem Artikel erfahren Sie, wie Sie Nachrichten in Django-Projekten in der Konsole protokollieren.
Protokollieren von Nachrichten mit der eingebauten Python-Bibliothek logging
Python wird mit einer integrierten Bibliothek logging
geliefert, deren einziger Zweck darin besteht, ein flexibles Ereignisprotokollierungssystem zu implementieren. In diesem Artikel werden wir nicht alles durchgehen, sondern nur die Grundlagen und ein paar wesentliche Dinge behandeln.
Bei der Arbeit mit logging
verwenden wir einen logger
, um Meldungen an die Konsole zu protokollieren. Wie oben erwähnt, haben die Protokollnachrichten einige Ebenen, die den Zweck einer Protokollnachricht angeben. Diese Bibliothek hat fünf solcher Ebenen, und jeder Ebene ist eine Dienstaltersnummer zugeordnet. Zum Beispiel hat die Stufe CRITICAL
die höchste Dienstaltersstufe von 50. DEBUG
hat 10. INFO
, WARNING
und ERROR
haben jeweils 20, 30 und 40.
DEBUG
- Wird verwendet, um Nachrichten zu drucken, um eine Anwendung zu debuggen.INFO
- Wird verwendet, um allgemeine Nachrichten wie Bestätigungen, Bestätigungen und Erfolgsmeldungen zu drucken.WARNING
- Wird verwendet, um Warnungen, unerwartete Ereignisse aufgrund von Eingaben, Hinweise auf zukünftige Probleme usw. zu melden.ERROR
- Wird verwendet, um auf schwerwiegende Probleme aufmerksam zu machen, die die Ausführung der Anwendung höchstwahrscheinlich nicht stoppen.CRITICAL
- Wird verwendet, um auf kritische Probleme aufmerksam zu machen, die die Benutzerdaten schädigen, die Benutzerdaten offenlegen, die Sicherheit beeinträchtigen, einen Dienst stoppen oder die Anwendung selbst beenden können.
Die Bibliothek logging
enthält Funktionen, mit denen wir Nachrichten protokollieren können. Um dies zu demonstrieren, überprüfen Sie den folgenden Code:
import logging
logging.debug("Log message goes here.")
logging.info("Log message goes here.")
logging.warning("Log message goes here.")
logging.error("Log message goes here.")
logging.critical("Log message goes here.")
Standardmäßig protokolliert der Logger die Logmeldungen der Ebene debug
und info
nicht. Um sie zu aktivieren, müssen wir einen Level für den Logger definieren. Der folgende Code macht dasselbe:
import logging
logging.basicConfig(level=logging.NOTSET) # Here
logging.debug("Log message goes here.")
logging.info("Log message goes here.")
logging.warning("Log message goes here.")
logging.error("Log message goes here.")
logging.critical("Log message goes here.")
Wenn die Stufe auf INFO
eingestellt ist, werden nur alle Stufen mit Dienstaltersnummern größer und gleich INFO
gedruckt. Das folgende Programm bildet diesen Vorgang ab:
import logging
logging.basicConfig(level=logging.INFO) # Here
logging.debug("Log message goes here.")
logging.info("Log message goes here.")
logging.warning("Log message goes here.")
logging.error("Log message goes here.")
logging.critical("Log message goes here.")
Zur Definition des Levels kann die Methode basicConfig()
verwendet werden. Insgesamt kann der Parameter level
sechs Werte annehmen.
logging.DEBUG
# 10logging.INFO
# 20logging.WARNING
#30logging.ERROR
# 40logging.CRITICAL
# 50logging.NOTSET
# 0
Es gibt mehr Parameter, die Sie konfigurieren können; Sie können hier mehr darüber lesen.
Weitere Informationen finden Sie in dieser Liste:
filename
- Die MethodebasicConfig()
hat einenfilename
-Parameter, mit dem ein Dateiname gesetzt werden kann, unter dem alle Meldungen protokolliert werden sollen. Wenn ein Dateiname angegeben wird, werden die Protokollnachrichten in dieser Datei statt in der Konsole protokolliert.filemode
- Die MethodebasicConfig()
hat einenfilemode
-Parameter, mit dem der Öffnungsmodus für die genannte Datei definiert wird. Standardmäßig ist es auf"a"
gesetzt, wasappend
bedeutet. Jedes Mal, wenn Sie das Programm ausführen, werden neue Protokollnachrichten an die alten Nachrichten angehängt.format
- Die MethodebasicConfig()
hat einenformat
-Parameter, mit dem die Struktur der Log-Nachrichten formatiert werden kann. Das Standardformat, das wie folgt aussieht:<Level>:root:<Message>
, wird durch das neue Format überschrieben.
Wenn Sie mehr über diese Bibliothek erfahren möchten, lesen Sie hier.