2017-11-23 2 views
3

Ich weiß, dass diese Frage ein wenig außerhalb des Bereichs von Stack Overflow liegt, aber ich finde nichts und ich frage mich, ob ich nach dem Falschen suche.Fehler melden von einer JavaFX-Anwendung oder einer Java-Anwendung

Ich habe eine JavaFX-Anwendung entwickelt, und ich versuche zu verfolgen, wenn es abstürzt oder eine unerwartete Ausnahme erhält. Ich weiß, dass es unzählige Dienste und Bibliotheken gibt, die dies für Web-Anwendungen tun, und mir sind sogar ein oder zwei für .Net-Anwendungen bekannt, aber ich finde keine vielversprechende Lösung für JavaFX.

finde ich tat:

Es gibt viele Fehler Tracker da draußen in der Welt, wie Sentry, Rollbar, etc., aber alle von ihnen für Server-Anwendungen konzipiert scheinen die ist anders als Client-Anwendungen.

Zum Beispiel ist es in Serveranwendungen sehr einfach, jede Anforderung in einen Catch-All-Handler zu verpacken, der die Ausnahme meldet. Eine Client-Anwendung generiert Threads, jeder Thread benötigt einen eigenen Handler. Die ganze Anwendung kann abstürzen (eigentlich, wenn etwas schief geht, ist der komplette Absturz der richtige Vorgang, anstatt eine App im falschen Zustand zu belästigen). An diesem Punkt sollte ein Popup erscheinen, um nach Feedback zu fragen und den Bericht an den Server zu senden.

Ein Beispiel hierfür in .Net von Hand tun: https://stevenbenner.com/2010/01/reporting-of-unhandled-exceptions-in-your-distributable-net-application/

+2

Wenn Sie sagen, Abstürze beziehen Sie sich auf einen Systemfehler oder auf Ihren App-Fehler aufgrund einiger unbehandelter Ausnahmen? Wenn Ihr Code sicher ist, dh Sie jede Ausnahme (Runtime) behandeln, benötigen Sie lediglich einen Protokollmechanismus, um ein Protokoll mit dem tatsächlichen Fehler und der tatsächlichen Uhrzeit zu informieren/speichern. Falls ich Sie nicht richtig verstanden habe, lassen Sie es mich wissen. – JKostikiadis

+0

@JKostikiadis: Abstürze und oder Ausnahmen, schließlich sind Abstürze in Java nur unbehandelte Ausnahmen (ich mache mir keine Sorgen, dass die JVM selbst abstürzt). Ob ich alle Ausnahmen aufspüre und sie aufzeichne oder die Blase platziere und eine Art Wrapper sie protokolliere, funktioniert auf jeden Fall (und tatsächlich könnte ich eine Mischung aus diesen beiden Szenarien beenden). – Pablo

+0

Sie müssen sich nicht auf JavaFX beschränken; Sie benötigen lediglich ein Java-kompatibles SDK. Hast du [Sentry] (https://sentry.io/for/java/) angeschaut? – beatngu13

Antwort

-1

Meiner Meinung nach einer der wichtigsten Aspekte der Anwendungsentwicklung Skalierbarkeit ist. Eine Möglichkeit, dies zu erreichen, besteht darin, eine Möglichkeit zu finden, das Anwendungsverhalten zur Laufzeit zu verfolgen. Wenn ich über Verhalten spreche, meine ich fast jede Aktion, die Ihre Anwendung ausführt, um eine Aufgabe auszuführen, einschließlich Fehlern (Laufzeitausnahmen), Leistungsstatistiken oder sogar Speicherlecks. Daher bietet Ihnen Java einen einfachen Protokollmechanismus java.util.logging (article), den Sie verwenden können. Natürlich gibt es andere logging API wie Log4j, Logback oder Sie können Ihren eigenen Logger erstellen (ich empfehle nicht .. kein Punkt neu erfinden das Rad: P). Ein guter Artikel, den Sie lesen können, um sich einen Überblick zu verschaffen, ist Java Logging Basics

+0

Ich sehe nicht, wie mir das hilft, es sei denn, ich habe eine Möglichkeit, diese Protokolle aus Tausenden von Instanzen zu sammeln, die auf verschiedenen Rechnern laufen. – Pablo

+0

Well-Log-Mechanismus kann auf Client und Server implementiert werden. Auf der Clientseite sollten Sie einen Berichtsmechanismus erstellen, in dem Sie den Benutzer auffordern, die Protokolldateien (Fehlerberichte) zu senden, um auf diese zuzugreifen und das Problem zu beheben. Auf der Server-Seite ist die Arbeit viel einfacher als Sie sich vorstellen können. – JKostikiadis

+0

Nein, falls die Server-Seite verteilt ist (Beispiel mehrere Server oder sogar ein Cluster), dann sollte eine Kommunikation zwischen ihnen erstellt werden, um auf die Protokolldateien zugreifen zu können. – JKostikiadis

Verwandte Themen