Seite 1 von 1
erweitertes Traceback und Logging
Verfasst: Donnerstag 30. März 2023, 09:53
von grubenfox
__blackjack__ hat geschrieben: Donnerstag 30. März 2023, 08:31
Es macht Sinn bei Diensten bei unerwarteten Ausnahmen, die vom Programm behandelt werden in dem sie ignoriert werden, möglichst viel zu protokollieren. Also mindestens mit dem `logging`-Modul aus der Standardbibliothek die Ausnahme samt Traceback. Ich mag das externe `loguru`, weil das noch ein paar Informationen zu lokalen Variablen mit in den Traceback packt, die bei der Fehler-/Ursachensuche hilfreich sein können.
Mal wieder so ein Moment wie ich ihn hier schon öfter hatte:

"Warum hat mir niemand früher gesagt dass es auch DAS gibt!"

(ich glaube z.b. von Sympy hatte ich auch hier zum ersten mal gehört.Da fehlt mir aber der passende Anwendungsfall.) Aber `loguru` sieht ja sehr interessant aus!
Re: erweitertes Traceback und Logging
Verfasst: Donnerstag 30. März 2023, 11:41
von __blackjack__
Falls es wichtig ist Protokollnachrichten (auch inkrementell) mit Informationen anzureichern, und die maschinell verarbeitbar zu speichern oder an andere Systeme weiter zu leiten ist `structlog` auch eine interessante Alternative.
Re: erweitertes Traceback und Logging
Verfasst: Freitag 31. März 2023, 09:44
von Kebap
Dann werfe ich hier noch das "snoop" Paket in den Raum, das blackjack schon anderswo empfohlen hatte: :
https://pypi.org/project/snoop/
__blackjack__ hat geschrieben: Dienstag 17. Januar 2023, 09:59
Mit `snoop` kann man sich die Aufrufreihenfolge und - hierarchie protokollieren lassen:
Code: Alles auswählen
09:58:23.01 >>> Call to main in File "forum21.py", line 14
09:58:23.01 14 | def main():
09:58:23.01 15 | some_function()
09:58:23.01 >>> Call to some_function in File "forum21.py", line 5
09:58:23.01 5 | def some_function():
09:58:23.01 6 | another_function()
09:58:23.01 >>> Call to another_function in File "forum21.py", line 9
09:58:23.01 9 | def another_function():
09:58:23.01 10 | print("Hello, World")
Hello, World
09:58:23.01 <<< Return value from another_function: None
09:58:23.01 6 | another_function()
09:58:23.01 <<< Return value from some_function: None
09:58:23.01 15 | some_function()
09:58:23.01 <<< Return value from main: None