Python Logging: loguru vs logging
James Reed
Infrastructure Engineer · Leapcell

Python Logging Bibliotheken Vergleich: logging vs loguru
1. Loguru vereinfacht Logging
In der Python-Entwicklung ist Logging ein entscheidendes Werkzeug. Es hilft Entwicklern, den laufenden Status von Programmen aufzuzeichnen, Probleme zu debuggen und die Gesundheit von Systemen zu überwachen. Python verfügt über die eingebaute logging
-Bibliothek. Mit den sich ändernden Anforderungen haben jedoch viele Leute begonnen, loguru
als Alternative zu verwenden. Dieser Artikel vergleicht diese beiden Bibliotheken, um Ihnen bei der Auswahl einer geeigneteren Logging-Lösung zu helfen.
Loguru
ist eine beliebte Logging-Bibliothek von Drittanbietern. Sie hat sich zu einem leistungsstarken Ersatz für logging
entwickelt, indem sie den Konfigurationsprozess vereinfacht, verkettete Aufrufe unterstützt und mehr umfangreiche Funktionen bietet.
Vorteile von Loguru
- Einfache Konfiguration:
Loguru
erfordert keine komplexen Konfigurationen. Sie können komplexe Logging-Konfigurationen mit nur wenigen Codezeilen abschließen. - Verkettete Aufrufe: Es unterstützt verkettete Aufrufe, wodurch das Logging intuitiver wird.
- Multi-Target-Ausgabe: Es kann auf einfache Weise die Logging-Ausgabe sowohl in der Konsole als auch in Dateien erzielen und unterstützt auch umfangreiche Formatkonfigurationen.
- Zusätzliche Funktionen: Es unterstützt Funktionen wie automatische Protokollkomprimierung, Protokolldateirotation und Protokollaufbewahrungstage.
Grundlegendes Beispiel für Loguru
from loguru import logger # Logging konfigurieren logger.add("app.log", rotation="500 MB") # Die Datei wird automatisch rotiert, wenn sie 500 MB überschreitet # Log-Nachrichten logger.info("Dies ist eine Info-Nachricht.") logger.warning("Dies ist eine Warnmeldung.") logger.error("Dies ist eine Fehlermeldung.")
In diesem Beispiel müssen wir nicht zusätzlich mehrere Handler konfigurieren. Allein der Aufruf von logger.add()
kann die Dateilogging-Konfiguration problemlos abschließen.
Ausgabe in Datei und Konsole
Loguru
kann sehr bequem die Ausgabe sowohl in die Datei als auch in die Konsole erreichen:
from loguru import logger import sys # Hinzufügen der Logging-Ausgabe in Datei und Konsole logger.add("app.log", rotation="500 MB", retention="10 days") # Dateirotation und -aufbewahrung für 10 Tage logger.add(sys.stdout, level="INFO") # Ausgabe in die Konsole # Log-Nachrichten logger.info("Dies ist eine Info-Nachricht.") logger.warning("Dies ist eine Warnmeldung.") logger.error("Dies ist eine Fehlermeldung.")
Hier kann logger.add(sys.stdout, level="INFO")
die Protokolle ohne zusätzliche Konfiguration in der Konsole anzeigen.
2. Vor- und Nachteile des eingebauten Python-Loggings
Vorteile
- Teil der Standardbibliothek:
logging
ist Teil der Python-Standardbibliothek, daher ist keine zusätzliche Installation erforderlich und es ist plattformübergreifend. - Hochgradig anpassbar:
logging
bietet leistungsstarke Anpassungsfunktionen, die eine flexible Steuerung von Protokollformaten, -ebenen und -zielen (Dateien, Konsolen, Remote-Server usw.) ermöglichen. - Starke Kompatibilität: Viele Bibliotheken von Drittanbietern verwenden ebenfalls
logging
, was eine nahtlose Integration verschiedener Protokolle ermöglicht.
Nachteile
- Komplexe Konfiguration: Die grundlegende Verwendung von
logging
ist relativ einfach, aber etwas komplexere Konfigurationen werden langwierig und nicht intuitiv, insbesondere wenn es notwendig ist, gleichzeitig in mehrere Ziele (z. B. Dateien und Konsolen) auszugeben. - Keine verketteten Aufrufe:
logging
unterstützt keine verketteten Aufrufe wieloguru
und erfordert eine schichtweise Konfiguration.
Grundlegendes Beispiel
Ein einfaches Logging-Beispiel von logging
sieht wie folgt aus:
import logging # Logging konfigurieren logging.basicConfig( level = logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', filename='app.log', filemode='a' ) # Log-Nachrichten logging.info("Dies ist eine Info-Nachricht.") logging.warning("Dies ist eine Warnmeldung.") logging.error("Dies ist eine Fehlermeldung.")
In diesem Beispiel werden die Protokolle in der Datei app.log
aufgezeichnet, aber nicht in der Konsole angezeigt. Wenn wir die Protokolle sowohl in der Konsole als auch in der Datei anzeigen möchten, müssen wir zusätzlich StreamHandler
konfigurieren.
Konfiguration für die Ausgabe in Datei und Konsole
Um Protokolle sowohl in der Konsole als auch in der Datei auszugeben, müssen wir mehrere Handler
konfigurieren. Der Code lautet wie folgt:
import logging # Den Logger abrufen logger = logging.getLogger() logger.setLevel(logging.INFO) # Datei-Handler file_handler = logging.FileHandler('app.log') file_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')) # Konsolen-Handler console_handler = logging.StreamHandler() console_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')) # Die Handler zum Logger hinzufügen logger.addHandler(file_handler) logger.addHandler(console_handler) # Log-Nachrichten logger.info("Dies ist eine Info-Nachricht.") logger.warning("Dies ist eine Warnmeldung.") logger.error("Dies ist eine Fehlermeldung.")
Es ist ersichtlich, dass wir, um eine relativ einfache Funktion zu erreichen, verschiedene Handler
erstellen und diese einzeln konfigurieren müssen.
3. Detaillierter Vergleich zwischen logging und loguru
Feature | logging | loguru |
---|---|---|
Konfigurationskomplexität | Hoch, Handler müssen eingestellt werden | Niedrig, nur logger.add() erforderlich |
Datei-Rotation und -Aufbewahrung | Benötigt Unterstützung durch Drittanbietermodule | Integrierte Unterstützung für rotation und retention |
Gleichzeitige Ausgabe in Konsole und Datei | Mehrere Handler müssen eingestellt werden | Einfach mit sys.stdout zu erreichen |
Verkettete Aufrufe | Nicht unterstützt | Unterstützt |
Benutzerfreundlichkeit | Geeignet für komplexe Konfigurationen und Integrationen | Geeignet für schnelle Entwicklung und übersichtliche Protokollverwaltung |
4. Empfohlene Anwendungsszenarien
- Einfache Anwendungen und schnelle Entwicklung:
Loguru
ist eine bessere Wahl. Es ist prägnant und intuitiv und eignet sich für schnelles Prototyping und kleine Projekte. - Komplexe Anwendungen und Multi-Modul-Projekte: Die hochgradig anpassbaren Funktionen von
logging
eignen sich besser für komplexe Systeme, die Konfigurationen auf mehreren Ebenen erfordern, insbesondere für Projekte, die auf Bibliotheken von Drittanbietern angewiesen sind und eine Vereinheitlichung der Protokollverwaltung anstreben.
5. Zusammenfassung
Sowohl loguru
als auch logging
haben ihre Vor- und Nachteile. Für die meisten Python-Projekte machen die prägnante Syntax und die leistungsstarken Funktionen von loguru
es zur ersten Wahl für die schnelle Entwicklung. Für größere Projekte sind die Kompatibilität und Flexibilität der Standardbibliothek logging
besser geeignet. Ich hoffe, dieser Artikel kann Ihnen helfen, das geeignete Logging-Tool für Ihr Projekt auszuwählen.
Leapcell: Die beste Serverless-Plattform für Webhosting
Abschließend möchte ich die beste Plattform für die Bereitstellung von Python-Apps empfehlen: Leapcell
1. Multi-Sprachen-Unterstützung
- Entwickeln Sie mit JavaScript, Python, Go oder Rust.
2. Stellen Sie unbegrenzt Projekte kostenlos bereit
- Zahlen Sie nur für die Nutzung – keine Anfragen, keine Gebühren.
3. Unschlagbare Kosteneffizienz
- Pay-as-you-go ohne Leerlaufgebühren.
- Beispiel: 25 US-Dollar unterstützen 6,94 Millionen Anfragen bei einer durchschnittlichen Antwortzeit von 60 ms.
4. Optimierte Entwicklungserfahrung
- Intuitive Benutzeroberfläche für mühelose Einrichtung.
- Vollständig automatisierte CI/CD-Pipelines und GitOps-Integration.
- Echtzeitmetriken und -protokollierung für verwertbare Erkenntnisse.
5. Mühelose Skalierbarkeit und hohe Leistung
- Auto-Skalierung zur einfachen Bewältigung hoher Parallelität.
- Null Betriebsaufwand – konzentrieren Sie sich einfach auf den Aufbau.
Erkunden Sie mehr in der Dokumentation!
Leapcell Twitter: https://x.com/LeapcellHQ