Hervoragende Logging Modul: Loguru

Gute Links und Tutorials könnt ihr hier posten.
Antworten
Benutzeravatar
nieselfriem
User
Beiträge: 135
Registriert: Sonntag 13. Januar 2013, 16:00

Hallo,

beim herumstöbern und überlegen wie ich mein Logging aufsetze, insbesondere wie ich unerwartete Crashes des Programmes abfange und logge, bin ich auf das Modul Loguru gestoßen. Das Modul ist sehr einfach zu bedienen und fängt sehr einfach unepected exeptions und Crashes ab und logt diese in das Logfiles und zeugt es auf der Konsole. All das, was sicherlich das Standartlogging von Python auch kann. Es ist aber sehr viel einfach zu bedienen.
https://github.com/Delgan/loguru

VG niesel
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Ein Großteil der Features klingt gut ist aber unbrauchbar.

Es macht wesentlich mehr Sinn wenn der Supervisor (systemd, Kubernetes, ...) sich darum kümmert wo die logs hingehen. Anwendungen sollten zu stderr loggen, alles andere ist unpraktisch.

Wenn du mehrere Instanzen und dementsprechend Log Nachrichten über mehrere Server verteilt, ist es praktisch diese irgendwie aggregieren zu können. Dies funktioniert nur dann wenn eine Log Nachricht zu einer Zeile korrespondiert. Tracebacks oder "descriptive exceptions" werden vollkommen unlesbar unter diesen Umständen. Es bietet sich deswegen auch an sys.excepthook zu überschreiben um Tracebacks anders zu formatieren.

Bei größeren Mengen an Log Nachrichten ist es wichtig die einfach durchsuchen zu können. Dazu ist es hilfreich wenn Log Nachrichten leicht zu parsen und indizieren sind d.h. idealerweise JSON formattiert sind. Außerdem hilft es viele Informationen wie möglich in eine Nachricht unterzubringen, statt Informationen über mehrere aufeinanderfolgende Nachrichten zu verteilen. Damit landet man zwangsläufig bei structured logging und dabei Log Nachrichten um Informationen wie request/flow ids usw. anzureichern. logurus unterstützt aber letzteres soweit ich sehe gar nicht.

Wenn ich sehe was an brauchbaren Features übrig bleibt, bleibe ich dann doch lieber bei structlog.
Benutzeravatar
__blackjack__
User
Beiträge: 12984
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@DasIch: Ich würde da nicht „Anwendungen“ sagen, sondern „Webanwendungen“. Denn bei normalen Anwendungen, Konsole oder GUI, kümmert sich da ja kein Daemon darum das die gestartet werden und die Logs irgendwo landen, rotiert, komprimiert, usw. werden.

Serialisieren als JSON und anreichern mit Kontextinformationen geht mit `loguru` auch: https://github.com/Delgan/loguru#struct ... -as-needed

Noch eine alternative Logging-Bibliothek wäre Logbook. Da hat mir zum Beispiel der FingersCrossedHandler sehr gut gefallen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Benutzeravatar
DeaD_EyE
User
Beiträge: 1011
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Ich habe so einen Anwendungsfall für Loguru. Da die Anwendung unter Windows läuft (leider), logge ich einfach in das offene Terminal.
Da ich ein faules Schwein bin, will ich mich gar nicht um intensiv um das Logging kümmern und setze dementsprechend Loguru ein.
Ich bin aber auch schon auf Probleme gestoßen und ich finde es eine absolute Unart, dass manche Libraries nach stdout schreiben.
Die Logs irgendwo hin zu schreiben, bringt mir keinen Vorteil.

Seit systemd hat sich viel verändert. Zum Glück zum besseren.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten