Wie man Protokollierungsebenen (Logging Levels) und -ausgaben in Python konfiguriert

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Eine ordnungsgemäße Protokollierung (Logging) ist für jede Python-Anwendung von entscheidender Bedeutung, da sie wertvolle Einblicke in das Verhalten, die Fehler und die Leistung der Anwendung bietet. In diesem Tutorial werden wir untersuchen, wie man die Protokollierungsebenen (Logging Levels) und -ausgaben in Python konfiguriert, damit Sie Ihren Code effektiv verwalten und debuggen können.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/PythonStandardLibraryGroup -.-> python/os_system("Operating System and System") subgraph Lab Skills python/standard_libraries -.-> lab-415071{{"Wie man Protokollierungsebenen (Logging Levels) und -ausgaben in Python konfiguriert"}} python/os_system -.-> lab-415071{{"Wie man Protokollierungsebenen (Logging Levels) und -ausgaben in Python konfiguriert"}} end

Einführung in die Protokollierung (Logging) in Python

Die Protokollierung (Logging) ist ein grundlegendes Merkmal in Python, das es Entwicklern ermöglicht, Ereignisse, Fehler und andere relevante Informationen während der Ausführung eines Programms zu verfolgen und aufzuzeichnen. Sie bietet eine flexible und leistungsstarke Möglichkeit, das Verhalten einer Anwendung zu überwachen, das Debugging zu erleichtern und effektives Problembeheben zu ermöglichen.

Die Python-Standardbibliothek enthält ein eingebautes logging-Modul, das eine umfassende Reihe von Tools zur Konfiguration und Verwaltung der Protokollierungsfunktionalität bietet. Mit diesem Modul können Sie benutzerdefinierte Protokollmeldungen erstellen, verschiedene Protokollierungsebenen (Logging Levels) festlegen und die Ausgabe an verschiedene Ziele leiten, wie z. B. die Konsole, Dateien oder sogar Remote-Protokollierungsdienste.

Das Verständnis der Grundlagen der Protokollierung in Python ist entscheidend für das Schreiben robuster und wartbarer Anwendungen. Indem Entwickler die Protokollierungsfunktionen nutzen, können sie wertvolle Einblicke in das Laufzeitverhalten ihrer Programme gewinnen, Probleme effizienter identifizieren und beheben und die Gesamtqualität und Zuverlässigkeit ihrer Software verbessern.

import logging

## Configure the logging level
logging.basicConfig(level=logging.INFO)

## Log messages at different levels
logging.debug("This is a debug message.")
logging.info("This is an informational message.")
logging.warning("This is a warning message.")
logging.error("This is an error message.")
logging.critical("This is a critical message.")

Das obige Code-Snippet zeigt die grundlegende Verwendung des logging-Moduls in Python. Indem die Protokollierungsebene auf INFO festgelegt wird, gibt das Programm nur Meldungen mit einer Schweregradstufe von INFO oder höher aus (d. h. Warnungen, Fehler und kritische Meldungen).

Festlegen der Protokollierungsebenen (Logging Levels)

Die Protokollierungsebenen (Logging Levels) sind ein entscheidender Aspekt des Protokollierungssystems in Python, da sie es Ihnen ermöglichen, die Redundanz und Granularität der protokollierten Informationen zu steuern. Das logging-Modul in Python definiert die folgenden Standard-Protokollierungsebenen, die in aufsteigender Reihenfolge der Schweregradstufen angeordnet sind:

  1. DEBUG: Detaillierte Informationen, die normalerweise nur bei der Fehlersuche von Interesse sind.
  2. INFO: Bestätigung, dass alles wie erwartet funktioniert.
  3. WARNING: Ein Hinweis darauf, dass etwas Unerwartetes passiert ist oder in Zukunft passieren könnte (z. B. eine benutzerspezifische Eingabe, die nicht verarbeitet werden kann).
  4. ERROR: Ein schwerwiegenderes Problem ist aufgetreten, und die Anwendung kann möglicherweise nicht alle Funktionen ausführen.
  5. CRITICAL: Ein sehr schwerwiegendes Problem ist aufgetreten, und die Anwendung kann nicht weiterlaufen.

Sie können die Protokollierungsebene mit der logging.basicConfig()-Funktion festlegen oder indem Sie die Protokollierungsebene für einzelne Logger konfigurieren. Hier ist ein Beispiel:

import logging

## Set the logging level to DEBUG
logging.basicConfig(level=logging.DEBUG)

## Log messages at different levels
logging.debug("This is a debug message.")
logging.info("This is an informational message.")
logging.warning("This is a warning message.")
logging.error("This is an error message.")
logging.critical("This is a critical message.")

In diesem Beispiel werden alle Protokollmeldungen, unabhängig von ihrer Schweregradstufe, aufgezeichnet und angezeigt, indem die Protokollierungsebene auf DEBUG festgelegt wird. Das Anpassen der Protokollierungsebene ermöglicht es Ihnen, die Menge der protokollierten Informationen zu steuern, was besonders nützlich sein kann, wenn Sie komplexe Anwendungen debuggen oder die Auswirkungen umfangreicher Protokollierung auf die Leistung verwalten.

Es ist wichtig zu beachten, dass die Protokollierungsebene auch für einzelne Logger festgelegt werden kann, was eine feinere Kontrolle über das Protokollierungsverhalten verschiedener Komponenten in Ihrer Anwendung ermöglicht.

Konfigurieren der Protokollausgaben (Logging Outputs)

Neben der Festlegung der Protokollierungsebenen (Logging Levels) ermöglicht das logging-Modul in Python die Konfiguration der Ausgabeziele für Ihre Protokollmeldungen. Standardmäßig werden Protokollmeldungen an die Konsole (d. h. sys.stderr) gesendet, aber Sie können sie auch an andere Ziele umleiten, wie z. B. Dateien, Netzwerksockets oder sogar benutzerdefinierte Handler.

Hier ist ein Beispiel, wie Sie die Protokollierung so konfigurieren, dass Meldungen in eine Datei geschrieben werden:

import logging

## Configure logging to write to a file
logging.basicConfig(filename='app.log', level=logging.INFO)

## Log messages at different levels
logging.debug("This is a debug message.")
logging.info("This is an informational message.")
logging.warning("This is a warning message.")
logging.error("This is an error message.")
logging.critical("This is a critical message.")

In diesem Beispiel wird die logging.basicConfig()-Funktion verwendet, um die Ausgabedatei (filename='app.log') und die Protokollierungsebene (level=logging.INFO) anzugeben. Alle Protokollmeldungen mit einer Schweregradstufe von INFO oder höher werden in die Datei app.log geschrieben.

Sie können auch mehrere Handler konfigurieren, um Protokollmeldungen gleichzeitig an verschiedene Ziele zu senden. Beispielsweise möchten Sie möglicherweise kritische Meldungen in eine Datei senden, während Sie informative und Warnmeldungen auf der Konsole anzeigen. Hier ist ein Beispiel:

import logging

## Configure logging to write to a file and the console
file_handler = logging.FileHandler('app.log')
console_handler = logging.StreamHandler()

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s %(levelname)s: %(message)s',
    handlers=[file_handler, console_handler]
)

## Log messages at different levels
logging.debug("This is a debug message.")
logging.info("This is an informational message.")
logging.warning("This is a warning message.")
logging.error("This is an error message.")
logging.critical("This is a critical message.")

In diesem Beispiel werden zwei Handler erstellt: file_handler, um Protokolle in eine Datei zu schreiben, und console_handler, um Protokolle auf der Konsole anzuzeigen. Die logging.basicConfig()-Funktion wird dann verwendet, um das Protokollierungssystem so zu konfigurieren, dass beide Handler verwendet werden, wobei das Protokollformat und die Ebene angegeben werden.

Durch die Anpassung der Protokollausgaben können Sie sicherstellen, dass die Protokollierungsinformationen Ihrer Anwendung an die am besten geeigneten Ziele geleitet werden, was es einfacher macht, das Verhalten Ihrer Anwendung zu überwachen, zu analysieren und zu debuggen.

Zusammenfassung

Am Ende dieses Tutorials werden Sie einen soliden Überblick darüber haben, wie Sie die Protokollierungsebenen (Logging Levels) und -ausgaben in Ihren Python-Projekten konfigurieren können. Sie können Protokollmeldungen anpassen, geeignete Protokollierungsebenen festlegen und die Protokolle an verschiedene Ziele leiten, um eine effiziente Fehlerverfolgung und Fehlersuche zu gewährleisten. Das Beherrschen dieser Techniken wird Ihren Python-Entwicklungsworkflow erheblich verbessern und Ihnen helfen, robuster und wartbarere Anwendungen zu entwickeln.