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:
Loguruerfordert 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:
loggingist Teil der Python-Standardbibliothek, daher ist keine zusätzliche Installation erforderlich und es ist plattformübergreifend. - Hochgradig anpassbar:
loggingbietet 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
loggingist 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:
loggingunterstützt keine verketteten Aufrufe wieloguruund 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:
Loguruist 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
loggingeignen 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

