Verwenden Sie Log4j mit Hilfe der Protokollierungsbibliothek in Python
-
Überblick über
Log4j
und seine Bedeutung für die Verwendung -
Verwenden Sie
Log4j
mit Hilfe der Bibliotheklogging
in Python
Dieser Artikel erklärt, was log4j
ist und wie es funktioniert und warum wir es verwenden sollten. Wir werden auch sehen, wie man log4j
innerhalb der Programmiersprache Python mit Hilfe der Bibliothek logging
verwendet.
Überblick über Log4j
und seine Bedeutung für die Verwendung
log4j
ist eine Software, die von Programmierern genutzt wird, um ihnen beim Protokollieren
von Daten in ihrer Anwendung zu helfen. Und Protokollieren
von Daten bedeutet, ein Tagebuch über die Aktivitäten oder Aktionen zu führen, die in der Anwendung durchgeführt werden.
Wir können log4j
aus Sicherheitsgründen verwenden, wie zum Beispiel beim Betrachten der verschiedenen Authentifizierungen. Es könnte aber auch dazu dienen, Dinge aufzuzeichnen, die in der Anwendung zu Debugging-Zwecken passiert sind.
Oder um allgemein zu wissen, was die Anwendung getan hat. Zum Beispiel ist log4j
ein Framework in der Java-Programmiersprache, das eine Semi-Build-Anwendung ist.
In ähnlicher Weise haben wir in Python ein logging
-Modul anstelle von log4j
verwendet. Protokollieren
ist ein Prozess zum Aufzeichnen von Anwendungsaktionen und -zuständen auf einer sekundären Schnittstelle. Mit anderen Worten, schreiben Sie Ihre Programmaktionen in eine Datei, aber wie starten Sie die Protokollierung?
Nun, Sie müssen sich mit den Ebenen der Protokollierung
vertraut machen. Jede logging
-Bibliothek ermöglicht es Ihnen, Informationen auf einer bestimmten Ebene zu sperren. Es gibt fünf primäre Protokollierungsebenen, die Sie kennen müssen.
Ebenen | Beschreibung |
---|---|
debug |
Die Stufe debug wird während des Entwicklungsprozesses oder der Fehlerbehebung und Fehlerbehebung verwendet. Alle entwicklerspezifischen Informationen fallen unter diese Ebene. |
info |
Die Ebene info wird zum Protokollieren aller wichtigen Standardoperationen Ihres Programms verwendet, wie z. B. Standardbenutzer- oder Systemansichtsaktionen. |
warning |
Die Stufe Warnung wird zum Protokollieren von Ereignissen verwendet, die möglicherweise auf lange Sicht zu einem Fehler werden könnten. Diese logging -Stufe soll Ihnen helfen, Fehler aufzuspüren. |
error |
Die Ebene Fehler wird zum Aufschreiben von Fehlern verwendet, und Fehler sind Fehler, die die Ausführung des Programms auf falsche Weise beeinflussen können. |
critical |
Die kritische Ebene ist Weltuntergang; das Programm ist tot oder stark beschädigt. |
Verwenden Sie Log4j
mit Hilfe der Bibliothek logging
in Python
Jetzt werden wir nur einen einfachen Basiscode ausführen, und es gibt keine solche Logik, aber wir möchten Ihnen ein gewisses Verständnis zeigen, z. B. wie Sie alle Protokolle in eine Datei schreiben können.
Lassen Sie uns in den Code springen und zuerst das logging
-System konfigurieren, die basicConfig()
-Methode aufrufen und einen Dateinamen mit dem filename
-Parameter übergeben. Python schreibt alle Protokollmeldungen in diese Datei; Wenn es nicht existiert, erstellt Python es.
Der folgende Parameter ist Dateimodus
, was bedeutet, dass Dateimodus bedeutet, ob es sich um einen Anhängemodus an den Schreibmodus handelt oder was auch immer Sie dort eingeben, und standardmäßig wird die Datei im Anhängemodus erstellt. Das nächste ist das format
, das viele Informationen wie asctime
, levelname
und message
darstellt.
asctime
zeigt im Grunde an, welche Art von Zeit in dieser speziellen Textdatei bezüglich der Protokolle gedruckt wird. Der zweite Parameterwert ist etwas namens levelname
; Dieser Parameter zeigt uns, welche Art von Fehler während der Ausführung aufgetreten ist.
Die Nachricht
sind alle Nachrichten, die wir versuchen, in diese Protokollnachricht zu drucken. Wir verwenden datefmt
; Dieser Parameter wird die Zeit in einer bestimmten Reihenfolge drucken.
Die Funktion basicConfig()
hat ein anderes Attribut, wir können alle Attribute von hier lesen.
import logging
logging.basicConfig(
filename="demo.txt",
filemode="a",
format="%(asctime)s %(levelname)s-%(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
Jetzt haben wir eine einfache Logik geschrieben, in der wir das Perzentil mit einigen Zahlen vergleichen und einige Protokolle in die Textdatei einfügen.
for i in range(0, 15):
if i % 2 == 0:
logging.error("Log error message")
elif i % 3 == 0:
logging.warning("Log warning message")
elif i % 5 == 0:
logging.debug("Log debug message")
elif i % 7 == 0:
logging.critical("Log critical message")
else:
logging.info("Log info message")
Ausgang:
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 WARNING-Log warning message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 CRITICAL-Log critical message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 WARNING-Log warning message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
Nach dem Ausführen des Programms können wir feststellen, dass die Protokolle info
und debug
nicht in die Textdatei eingefügt wurden, da levelname
standardmäßig error
aufruft und die Ebenen error
info
und debug
nicht anzeigen.
Wir können jedoch andere Ebenen verwenden, indem wir den Parameter level
verwenden, während wir logging.DEBUG
übergeben.
level = logging.DEBUG
Wenn wir jetzt die Datei demo.txt
ausführen und öffnen, sehen wir alle Protokollmeldungen, aber wenn wir die Protokollebene auf logging.ERROR
aktualisieren, sehen wir die Meldungen Fehler
und Kritisch
.
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 WARNING-Log warning message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 DEBUG-Log debug message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 CRITICAL-Log critical message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 WARNING-Log warning message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
Nehmen wir ein allgemeines Problem, bei dem wir eine beliebige Zahl durch Null teilen. Um diese Operation zu bestimmen, verwenden wir den try
-Block.
Wenn die Operation fehlschlägt, gehen wir in den Block außer
und zeigen den Protokollfehler an.
try:
1 / 0
except:
logging.error("Log zero division error occurs")
Ausgang:
2022-09-02 00:29:48 ERROR-Log zero division error occurs
Es ist ein wesentlicher Bestandteil eines Projekts, da Sie wahrscheinlich diese Art von Protokollierungs
-Mechanismus schreiben müssen, wenn Sie an einem Projekt arbeiten.
Vollständiger Python-Code:
import logging
logging.basicConfig(
filename="demo.txt",
filemode="w",
format="%(asctime)s %(levelname)s-%(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
level=logging.DEBUG,
)
# for i in range(0,15):
# if i%2==0:
# logging.error('Log error message')
# elif i%3==0:
# logging.warning('Log warning message')
# elif i%5==0:
# logging.debug('Log debug message')
# elif i%7==0:
# logging.critical('Log critical message')
# else:
# logging.info('Log info message')
try:
1 / 0
except:
logging.error("Log zero division error occurs")
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn