Protokollieren von Nachrichten in der Konsole in Django

Vaibhav Vaibhav 12 April 2022
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 # 10
  • logging.INFO # 20
  • logging.WARNING #30
  • logging.ERROR # 40
  • logging.CRITICAL # 50
  • logging.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 Methode basicConfig() hat einen filename-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 Methode basicConfig() hat einen filemode-Parameter, mit dem der Öffnungsmodus für die genannte Datei definiert wird. Standardmäßig ist es auf "a" gesetzt, was append bedeutet. Jedes Mal, wenn Sie das Programm ausführen, werden neue Protokollnachrichten an die alten Nachrichten angehängt.
  • format - Die Methode basicConfig() hat einen format-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.

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.