Programmierung

Anmelden in Python - Ihr One-Stop-Guide

Anmelden in Python - Ihr One-Stop-Guide

Die Protokollierung ist ein entscheidender Schritt, der von einem Programmierer während der Softwareentwicklung durchgeführt werden muss. Es hilft Entwicklern, Ereignisse zu verfolgen, die während der Ausführung eines Programms auftreten, was für den zukünftigen Debug-Prozess hilfreich sein kann. Wenn Sie ein neuer Lerner sind oder an einem neuen Projekt arbeiten, empfiehlt es sich, die Protokollierung zum Verfolgen des Codeflusses und zum Beheben von Fehlern zu verwenden.

Beim Schreiben kurzer Programme ignorieren die meisten von uns normalerweise die Protokollierung, aber wenn das Programm komplex wird, ist es ein wesentlicher und nützlicher Schritt, die Protokollierung zu verwenden, um die Fehler zu beheben, die den reibungslosen Betrieb der Software verhindern. Logging ist nichts anderes, als die Ereignisse der Software in eine Logdatei zu schreiben oder im Terminal auszugeben.

Logging wird nicht nur zum Debuggen verwendet. Es ist auch ein hilfreicher Prozess zum Sammeln von Informationen, Sammeln von Nutzungsdaten und vielen anderen nützlichen Aufgaben. Es ist auch eine der gebräuchlichsten Funktionen für Webentwickler, nicht nur Fehler zu erkennen, sondern auch Benutzerdaten wie IP-Adressen zu sammeln, die für weitere Geschäftsanalysen verwendet werden können.

In Python werden die meisten Protokollierungsfunktionen von der bereitgestellt Protokollierung Modul, das in der Standardbibliothek von Python enthalten ist, sodass wir keine zusätzliche Konfiguration vornehmen müssen. Mal sehen, wie man es zum Einloggen in Python verwendet. Bevor Sie diesem Tutorial folgen, muss die neueste Version von Python auf Ihrem System installiert sein. Wenn Sie nicht das neueste Python auf Ihrem System installiert haben, können Sie unsere Schritt-für-Schritt-Anleitung zum Installieren und Aktualisieren von Python unter Linux befolgen.

Das Python-Logging-Modul

Das Logging-Modul von Python ist eine der am häufigsten verwendeten Logging-Bibliotheken in Python. Das Beste daran ist, dass es mit der Standardbibliothek von Python vorinstalliert ist, sodass wir keine Konfiguration oder Installation vornehmen müssen. Das Logging-Modul ist robust und unkompliziert, was bedeutet, dass es sowohl für Anfänger als auch für Unternehmen nützlich ist. Um das Logging-Modul in Python zu verwenden, müssen wir es wie in der folgenden Codezeile in unser Programm importieren.

Protokollierung importieren

Sehen wir uns nun eine Demo an, wie wir einige Nachrichten in das Terminal einloggen können. Kopieren Sie einfach den folgenden Code in Ihre bevorzugte Python-IDE und führen Sie ihn aus.

Logging-Logging importieren.warning("Dies ist eine Warnung")

Beim Ausführen des obigen Codes erhalten wir die Ausgabe wie im folgenden Bild gezeigt shown.

Wie in der Ausgabe zu sehen ist, gibt das Programm eine Warnmeldung aus. Das Protokollierungsmodul hat auch einige andere Protokollierungsebenen wie Infos, Fehler usw., die unsere Aufgabe leicht machen. Lassen Sie uns sie kurz mit Beispielen diskutieren.

Python-Protokollierungsebenen

Viele Protokollierungsstufen können verwendet werden, um verschiedene Meldungen nach Schweregrad zu protokollieren. Die von Python bereitgestellten Levels Protokollierung Modul sind

Diese Stufen werden in absteigender Reihenfolge ihres Schweregrades angezeigt. Lassen Sie uns sehen, wie Sie diese Ebenen in unserem Programm verwenden können. Kopieren Sie einfach den folgenden Code und führen Sie ihn in der Python-IDE aus.

Logging-Logging importieren.Critical("Dies ist eine kritische Nachricht") Protokollierung.error("Dies ist eine Fehlermeldung") Protokollierung.warning("Dies ist eine Warnmeldung") Protokollierung.info("Dies ist eine Infonachricht") Protokollierung.debug("Dies ist eine Debug-Nachricht")

Beim Ausführen des obigen Codes in der IDE wird die Ausgabe, die das Terminal anzeigt, im folgenden Bild angezeigt shown.

Wie Sie in der Ausgabe sehen können, werden die Meldungen DEBUG und INFO nicht im Terminal gedruckt, da das Protokollierungsmodul standardmäßig nur Meldungen mit einer Sicherheitsstufe höher oder gleich der Warnung protokolliert. Um INFO und DEBUG im Terminal anzuzeigen, müssen wir die Grundkonfiguration des Loggers manuell ändern. Dazu können wir die basicConfig(**Kwargs) vom Logging-Modul bereitgestellte Methode. Um eine einfache Konfigurationsdemo zu sehen, führen Sie einfach den folgenden Code in Ihrer Python-IDE aus.

Logging-Logging importieren.basicConfig(level=logging.Debug Protokollierung.Critical("Dies ist eine kritische Nachricht") Protokollierung.error("Dies ist eine Fehlermeldung") Protokollierung.warning("Dies ist eine Warnmeldung") Protokollierung.info("Dies ist eine Infonachricht") Protokollierung.debug("Dies ist eine Debug-Nachricht")

Im obigen Code haben wir die Stufe von Protokollierung.DEBUGGEN, was bedeutet, dass alle Ebenen, die über der Debug-Ebene liegen, protokolliert werden. Daher werden im obigen Code alle Nachrichten protokolliert, wie im folgenden Bild gezeigt.

Lassen Sie uns mehr über die Methode basicConfig() des Logging-Moduls diskutieren.

Grundkonfigurationen

Das Logging-Modul bietet eine sehr nützliche Methode basicConfig(**Kwargs), die zum Einstellen von Konfigurationen für das Logging von Daten verwendet wird. Einige der am häufigsten verwendeten Parameter der Funktion basicConfig() sind:

Sehen wir uns an, wie wir diese Konfigurationen im Protokollierungsmodul von Python verwenden können, indem wir das Beispiel einer nach dem anderen untersuchen.

Der Level-Parameter wird verwendet, um den Schweregrad festzulegen, um eine praktische Demo zu sehen, wie man ihn verwendet, kopieren Sie den folgenden Code in die Python-IDE und führen Sie ihn aus.

Logging-Logging importieren.basicConfig(level=logging.INFO) Protokollierung.Critical("Dies ist eine kritische Nachricht") Protokollierung.error("Dies ist eine Fehlermeldung") Protokollierung.warning("Dies ist eine Warnmeldung") Protokollierung.info("Dies ist eine Infonachricht") Protokollierung.debug("Dies ist eine Debug-Nachricht")

Beim Ausführen des Codes sehen Sie möglicherweise die Ausgabe, wie im folgenden Bild gezeigt. Wie Sie sehen können, werden die Nachrichten, die über den Info-Ebenen liegen, gedruckt, aber die Nachricht auf der Debug-Ebene wird nicht gedruckt.

Der Level-Parameter ist eine nützliche Konfiguration, die so vorgenommen werden sollte, dass die Protokolldateien nicht zu groß sind, indem sie unnötige Daten enthalten und nur die erforderlichen Informationen enthalten.

Bei einer Datei anmelden

Wir haben nur gesehen, wie man sich am Terminal anmeldet, aber das Anmelden am Terminal ist nicht immer hilfreich, da wir es nicht für die spätere Verwendung speichern können. Für eine bessere Lösung können wir die Protokolle in einer Textdatei ausdrucken, die wir später speichern und analysieren. Die Protokolle sind Text und können in einer Textdatei in einem beliebigen Format gespeichert werden, aber allgemein wird angenommen, dass die Protokolle in einer Datei mit dem .Log-Erweiterung. Diese Dateien werden als Protokolldateien bezeichnet und werden universell zum Speichern von Protokollen von Programmen, Webanwendungen und anderer Software verwendet.

Wir können Protokolle in einer Datei speichern, indem wir die Konfiguration des Protokollierungsmoduls mit Hilfe der Funktion basicConfig() einrichten. Wir müssen den Namen der Datei, in der wir die Protokolle speichern möchten, im Parameter filename der Funktion basicConfig() angeben, wonach die Datensätze automatisch in der von uns angegebenen Protokolldatei gedruckt werden. Lassen Sie uns ein praktisches Beispiel sehen, um zu erfahren, wie es funktioniert.

Logging-Logging importieren.basicConfig(level=logging.INFO, Dateiname="mylog.log") Protokollierung.Critical("Dies ist eine kritische Nachricht") Protokollierung.error("Dies ist eine Fehlermeldung") Protokollierung.warning("Dies ist eine Warnmeldung") Protokollierung.info("Dies ist eine Infonachricht") Protokollierung.debug("Dies ist eine Debug-Nachricht")

Beim Ausführen des Codes können Sie sehen, dass eine neue Datei im aktuellen Arbeitsverzeichnisnamen erstellt wurde mylog.Log. Beim Öffnen der Datei mit einem Texteditor stellen Sie möglicherweise fest, dass die Protokolle in der Datei gespeichert wurden.

Wenn wir den Code erneut ausführen, sehen wir, dass das Protokoll an die Datei angehängt wird. Wir können dies ändern, indem wir den filemode-Parameter in der basiconfig()-Funktion angeben. Standardmäßig hat der Parameter filemode den Wert „a“, was für append steht. Manchmal wollen wir aber auch die bisher geloggten Daten löschen und die neuen Logs nur in die Datei schreiben. Dazu können wir dem filemode-Parameter den Wert „w“ geben, was für write steht, und er löscht alle vorherigen Daten in der Datei und schreibt die neuen. Eine Demo finden Sie im folgenden Beispiel.

Logging-Logging importieren.basicConfig(level=logging.INFO, Dateiname="mylog.log", filemode="w") loggen.Critical("Dies ist eine kritische Nachricht") Protokollierung.error("Dies ist eine Fehlermeldung") Protokollierung.warning("Dies ist eine Warnmeldung") Protokollierung.info("Dies ist eine Infonachricht") Protokollierung.debug("Dies ist eine Debug-Nachricht")

Beim Ausführen des obigen Codes stellen Sie möglicherweise fest, dass die in der Datei vorhandenen früheren Protokolle aus der Datei entfernt und die neuen Protokolle hinzugefügt wurden. Jedes Mal, wenn wir den Code ausführen, werden die neuen Protokolle hinzugefügt und die vorherigen gelöscht, was nützlich ist, wenn wir die Datensätze nicht für die weitere Verwendung benötigen.

Formatieren der Protokolle

Wir haben gesehen, dass die Ausgabeprotokolle das Standardlayout haben, aber wir können das Format ändern, indem wir den Formatparameter der Funktion basicConfig() setzen. Sehen wir uns eine praktische Demo an, um zu erfahren, wie wir den format-Parameter in der basicConfig()-Funktion verwenden können, um das Format des Protokolls zu ändern.

Logging-Logging importieren.basicConfig(level=logging.INFO, format="%(Dateiname)s: %(Levelname)s: %(Nachricht)s") Protokollierung.Critical("Dies ist eine kritische Nachricht") Protokollierung.error("Dies ist eine Fehlermeldung") Protokollierung.warning("Dies ist eine Warnmeldung") Protokollierung.info("Dies ist eine Infonachricht") Protokollierung.debug("Dies ist eine Debug-Nachricht")

Die Ausgabe des obigen Codes ist wie im Bild unten gezeigt.

Wie Sie in der Ausgabe sehen können, wurde auch der Dateiname angezeigt. Wir können den Formatparameter verwenden, um viele andere Formate anzugeben. Lassen Sie uns einige davon besprechen.

%(asctime)s: Dies wird verwendet, um die für Menschen lesbare Zeit in den Protokollen anzuzeigen. Um zu sehen, wie die Zeit angezeigt wird, führen Sie den folgenden Code in der Python-IDE aus.

Logging-Logging importieren.basicConfig(level=logging.INFO, format="%(asctime)s : %(message)s") Protokollierung.warning("Dies ist eine Warnmeldung")

Beim Ausführen des Codes sehen Sie möglicherweise die Ausgabe, wie im folgenden Bild gezeigt.

%(erstellt)f: Dies zeigt die Zeit an, in der das Protokoll erstellt wurde.

%(Dateiname)s: Dies wird verwendet, um den Namen der Datei in der Protokollnachricht anzuzeigen. Um zu sehen, wie es funktioniert, führen Sie einfach den folgenden Beispielcode in Ihrer Python-IDE aus.

Logging-Logging importieren.basicConfig(level=logging.INFO, format="%(asctime)s : %(filename)s : %(message)s") Protokollierung.warning("Dies ist eine Warnmeldung")

Die Ausgabe, die der Code bereitstellt, wird in der folgenden Abbildung gezeigt. In der Ausgabe wurde der Name der Datei angezeigt. Dies ist nützlich, wenn Sie an einem Projekt arbeiten, das mehrere Dateien umfasst, damit wir die Datei mit dem Fehler schnell abrufen können.

%(levelname)s: Dies wird verwendet, um den Namen des verwendeten Levels anzuzeigen, wie WARNING, DEBUG, etc.

%(levelno)s: Dies wird verwendet, um den numerischen Wert der Ebene zu drucken, zu der die Nachricht gehört.

%(lineno)d: Dies wird verwendet, um die Zeilennummer der aktuellen Zeile zu drucken, die die Meldung anzeigt. Dies ist sehr nützlich, da es uns die Zeilennummer gibt, in der wir nach einem Fehler suchen müssen, und hilft so beim Debugging-Prozess. Sehen wir uns einen Beispielcode an, um zu sehen, wie dies verwendet wird, um die Ausgabe von Protokollen zu erstellen.

import logging Format = '%(asctime)s : %(filename)s:%(lineno)d: %(message)s' Logging.basicConfig(level=logging.INFO, format= Format) Protokollierung.warning("Dies ist eine Warnmeldung")

Dieser Code druckt auch die Zeilennummer, wie im folgenden Bild gezeigt.

%(Mitteilungen: Es wird verwendet, um die Nachricht anzuzeigen, die wir protokolliert haben.

%(Pfadname)s: Dies wird verwendet, um den vollständigen Pfadnamen der Quellcodedatei anzuzeigen.

%(Prozess)d: Dadurch wird die Prozess-ID angezeigt, falls verfügbar.

%(Prozessname)s: Dadurch wird der Prozessname angezeigt, falls verfügbar.

%(thread)d: Dadurch wird die Thread-ID angezeigt, falls verfügbar.

%(threadName)s: Dadurch wird der Threadname angezeigt, falls verfügbar.

Protokollieren von variablen Daten

Wir haben die Nachrichten in den Protokollen selbst angegeben, die statische Daten sind. In realen Anwendungen handelt es sich bei den von uns protokollierten Daten jedoch hauptsächlich um dynamische Informationen aus unserer Anwendung. Dazu müssen wir die Variablen mit dem Meldungsprotokoll ausgeben. Wir können dies auf viele Arten tun. Beispielsweise können wir die Variablen einbinden und den String mit Platzhaltern formatieren und dann an das Message-Log übergeben, damit die Werte der Variablen in den Records ausgegeben werden.

Sehen Sie sich beispielsweise den folgenden Code an; Sie können den Code kopieren und in Ihrer Python-IDE ausführen.

import logging var_message = Protokollierung von "internen Fehlern".warning("Der Server wurde wegen %s gestoppt", var_message)

Beim Ausführen des Codes sehen Sie die Ausgabe, wie im folgenden Bild gezeigt. Wie Sie im Bild sehen können, wird der in der Variable gespeicherte Wert auch auf dem Bildschirm gedruckt.

Wir können auch Variablen in Protokollen anzeigen, indem wir die f-Strings verwenden, die in Python 3 eingeführt werden.6. Aber um die F-Strings zu verwenden, benötigen Sie Python 3.6 oder höher in Ihrem System installiert. Sie können überprüfen, welche Python-Version auf Ihrem System installiert ist, indem Sie den folgenden Befehl im Terminal ausführen.

python --version # für Python 2 unter Linux python3 --version # für Python 3 unter Linux

Dadurch wird die Version von Python gedruckt, die Sie in Ihrem System verwenden. Es empfiehlt sich, die neueste Python-Version zu verwenden, um eine bessere Leistung zu erzielen. Sie können sich unseren Leitfaden zum Aktualisieren Ihrer Python-Version unter Linux ansehen.

Um Strings mit den F-Strings in Python zu formatieren, müssen wir die folgende Code-Syntax verwenden. Sie können den Code in Ihrer bevorzugten Python-IDE kopieren und ausführen.

import logging var_message = Protokollierung von "internen Fehlern".warning(f"Der Server wurde wegen var_message angehalten")

Beim Ausführen des Codes erhalten Sie eine ähnliche Ausgabe wie beim Ausführen des obigen Codes. Aber wenn wir den Code sehen, können wir das f am Anfang des Strings bemerken, was bedeutet, dass es sich um einen f-String handelt, und wir können Variablen direkt in f-Strings verwenden, indem wir sie in geschweifte Klammern setzen.

Stack-Traces protokollieren

Das Logging-Modul kann auch zum Erfassen von Stack-Traces verwendet werden. Stacktraces sind die Ausnahmemeldungen, die ausgegeben werden, wenn ein Fehler im Programm aufgetreten ist. Wir können die Ausnahme erfassen, indem wir den Parameter exc_info beim Aufrufen der Protokollierungsfunktion auf True setzen. Dieser Parameter ist nützlich, da wir die komplette Ausnahmemeldung mit unserer Fehlermeldung in einem Datei- oder Terminalbildschirm protokollieren können.

Um eine praktische Demo zu erhalten, um zu erfahren, wie wir die Stack-Traces finden können, kopieren Sie den folgenden Code in Ihre Python-IDE und führen Sie ihn aus.

Protokollierung importieren versuchen: a = 1/0 außer Ausnahme wie e: Protokollierung.error("Ein Fehler ist aufgetreten", exc_info=True)

Beim Ausführen des Codes wird die Ausnahme im Terminal protokolliert. Sie sehen die Ausgabe des Codes, wie im folgenden Bild gezeigt. Sie können die Ausnahme auch mit dem Parameter filename in der Methode basicConfig() in eine Datei protokollieren, wie oben beschrieben.

Diese Methode ist auch beim Erstellen der umfangreichen Anwendung entscheidend, da wir eine Ausnahmebehandlung mit Protokollierung haben können, die sich hervorragend für den Debugprozess eignet.

Logger-Objekte

Das Protokollierungsmodul bietet auch einige nützliche Klassen, die für eine bessere Protokollierung verwendet werden können, hauptsächlich für eine breitere Anwendung. Sehen wir uns einige der am häufigsten verwendeten Klassen des Protokollierungsmoduls an und was und wie sie funktionieren.

Ausführliche Informationen zur Verwendung dieser Klassen finden Sie in der offiziellen Dokumentation des Python-Logging-Moduls.

Fazit

In diesem Artikel haben wir die Grundlagen der Anmeldung in Python gelernt. Das Logging-Modul ist eine einfache und leistungsstarke Möglichkeit, sich in Python anzumelden. Angenommen, Sie protokollieren bis jetzt nicht, heute ist der Tag, um mit dem Protokollieren zu beginnen, während Sie den Artikel lesen und erfahren, wie einfach es ist, sich mit Python anzumelden. Sie können die Anmeldung jetzt sowohl in kleinen als auch in bedeutenden Anwendungen verwenden.

Wenn Sie sich richtig einloggen, wird es in der Tat auf die eine oder andere Weise hilfreich sein. Ich rate Ihnen, es von kleinen Programmen aus zu verwenden, da es Ihnen hilft, ein oder zwei gute Kenntnisse zu erlangen und für große Projekte von unschätzbarem Wert ist. Vielleicht möchten Sie auch sehen, wie Sie mit SQLite-Datenbanken in Python arbeiten. 

Beste Gamepad-Mapping-Apps für Linux
Wenn du Spiele unter Linux gerne mit einem Gamepad statt mit einem typischen Tastatur- und Maus-Eingabesystem spielst, gibt es einige nützliche Apps f...
Nützliche Tools für Linux-Spieler
Wenn Sie gerne unter Linux spielen, haben Sie wahrscheinlich Apps und Dienstprogramme wie Wine, Lutris und OBS Studio verwendet, um das Spielerlebnis ...
HD-Remastered-Spiele für Linux, die noch nie zuvor eine Linux-Version hatten
Viele Spieleentwickler und -herausgeber entwickeln HD-Remaster alter Spiele, um die Lebensdauer des Franchise zu verlängern. Bitte Fans, die Kompatibi...