Speichern Sie Python-Ausnahmen in einer Datenbank

Bisher protokollieren wir unbehandelte Ausnahmen in Protokolldateien.

Der Umgang mit diesen Logfiles macht keinen Spaß.

Es wäre großartig, die Ausnahmen in einer Datenbank zu speichern.

Dies würde es einfacher machen, Ausnahmen als von Operatoren ausgeführt zu markieren.

Mit meiner Lieblingssuchmaschine fand ich Sentry. Aber das sieht nach einer kommerziellen Lösung aus.

Ich denke an eine leichte Self-Hosting-Lösung.

Wir verwenden Python und Django, um unsere Apps zu entwickeln.

Irgendwelche Empfehlungen?

Ich bezweifle, dass es dafür Bibliotheken gibt, da dies so sehr von Ihrer Anwendung abhängen würde. Sie könnten sys.excepthook auf Ihre eigene Funktion setzen, die sich in einer Datenbank protokolliert. Dadurch werden nur nicht abgefangene Ausnahmen angezeigt. Wenn Sie also ein Framework haben, das Ausnahmen abfängt, müssen Sie das einhaken. Es kann sich lohnen, sich die WebError-Bibliothek anzusehen, obwohl ihre Funktionsweise anders ist, Sie könnten sich inspirieren lassen.

Antworten (2)

Sentry scheint tatsächlich Open Source zu sein:

https://github.com/getsentry/sentry

Was sie unter https://getsentry.com verkaufen , ist Hosting, aber Sie können es auch kostenlos auf Ihrem eigenen Server hosten.

Ja, diese Art von Werkzeug existiert.

Die meisten von ihnen haben einige erweiterte Funktionen. Beispielsweise können Sie in der Regel nicht nur Ausnahme-Stack-Traces oder Fehlermeldungen hinterlegen, sondern ein Problem auch einfach manuell aufschreiben und hinzufügen. Das macht keinen großen Unterschied, denn Bugs sind sowieso nicht einheitlich.

Mit dem Umgang mit dem Markieren von Ausnahmen als erledigt und vielen anderen verwandten Funktionen, wie dem Kommentieren des Problems, haben wir einen typischen Bug-Tracker:

Wie Sie nach Python gefragt haben, fällt tracmir ein.

Siehe zum Beispiel Wikipedia zu Trac .

Es ist eine Webanwendung, die einfach lokal gehostet werden kann. Lizenziert ähnlich wie die BSD-Lizenz - das heißt, es ist "kostenloser" als die meisten anderen FOSS-Programme.

Es gibt natürlich viele andere ähnliche Systeme zur Auswahl.


Beachten Sie, dass es ein wichtiges, schwerwiegendes Problem beim automatischen Speichern von Fehlern gibt: Das Zusammenführen doppelter Berichte desselben Fehlers - oder sogar desselben zugrunde liegenden Problems mit unterschiedlichen Symptomen.
Das ist sowieso schwierig, wenn es manuell gemacht wird.

Sie können natürlich exakte Duplikate herausfiltern. Aber nur die. Außerdem erstellt das System viele irrelevante Berichte, die von einem Menschen niemals berücksichtigt worden wären.

Es erfordert viel manuelle Arbeit , um diese Datenbank zu verstehen.


Betrachtet man sentry, denke ich, dass dies eine Lösung zwischen Protokolldateien und einem Bugtracker ist.
Jemand sollte die meisten Fehler manuell einreichen, nachdem er viel Lärm ignoriert hat. Aber im Vergleich zur Verwendung von Protokolldateien stehen dieser Person sehr gute Tools und strukturierte Daten zur Verfügung.
Natürlich wird es einige Fälle geben, in denen wir einfach einen Stack-Trace an die REST-Schnittstelle leiten können trac, um ein neues Problem zu erstellen.

Ein Beispiel dafür kann ich mir aber nicht so einfach ausdenken...

Trac ist ein Bug/Issues-Tracker. Ich möchte nicht abgefangene Ausnahmen strukturiert speichern, nicht im Klartext.
sentryScheint eine Closed-Source-Lösung zu sein. Das geht in meinem Kontext nicht.