Verwenden Sie Log4j mit Hilfe der Protokollierungsbibliothek in Python

Salman Mehmood 8 Oktober 2023
  1. Überblick über Log4j und seine Bedeutung für die Verwendung
  2. Verwenden Sie Log4j mit Hilfe der Bibliothek logging in Python
Verwenden Sie Log4j mit Hilfe der Protokollierungsbibliothek 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")
Salman Mehmood avatar Salman Mehmood avatar

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

Verwandter Artikel - Python Logging