Ich erstelle eine Java-Anwendung, in der die Möglichkeit besteht, dass Ausnahmen ausgelöst werden. Ich behandle diese Ausnahmen in einem try-catch-Block und drucke entsprechende Nachrichten, so dass die Geschäftsbenutzer den hässlichen Stack-Trace im Falle eines Fehlers nicht sehen müssen.
Aber jetzt, wenn ich debugge, möchte ich die JAR-Datei in einer solchen Weise aufrufen, dass es die Stack-Traces für mich ausdrucken wird, so dass ich weiß, wo genau das Problem liegt.
Kann mir jemand erklären, wie dies erreicht werden kann?
Warum verwenden Sie keine Protokollierungsebenen?
DEBUG für Ihre technischen Fehler und INFO oder FEHLER mit den Geschäftscodes, die Ihre Nutzer verstehen.
Sie könnten slf4j als Fassade verwenden, um Implementierungen schnell ändern zu können und logback als die Implementierung für Ihre Protokollierung. Die Kombination von slf4j und logback ist derzeit ein sehr effizientes Protokollierungssystem. Für den Fall, dass Sie eine andere Implementierung wie Log4j, JDK 1.4 oder Jacarta Commons Logging verwenden möchten, können Sie einfach das Glas der Implementierung (Bindung) mit dem gewünschten ändern. Es folgt eine kurze Bedienungsanleitung zur Verwendung von slf4j mit Logback.
Als Erstes sollten Sie die notwendigen Gläser importieren, die für die Verwendung von slf4j benötigt werden.
Eclipse-Handbuch
Gehe in Eclipse zu deinem Projekt und klicke mit der rechten Maustaste darauf. Wählen Sie Eigenschaften .
Wählen Sie im linken Bereich Java-Erstellungspfad
Wählen Sie den Tab Bibliotheken
Klicken Sie auf Externe Jars hinzufügen
Suchen Sie Ihre extrahierten Ordner und fügen Sie logback-core-1.0.7.jar , logback-classic-1.0.7.jar von hinzu logback-1.0.7 und slf4j-api-1.7.0.jar im Ordner slf4j-1.7.0 . Klicken Sie auf OK, um zum Projekt zurückzukehren.
Netbeans-Leitfaden
Gehe zu deinem Projekt in Netbeans und klicke mit der rechten Maustaste darauf. Wählen Sie Eigenschaften .
Wählen Sie im linken Bereich Bibliotheken
Wählen Sie die Registerkarte Kompilieren
Klicken Sie auf Jar / Ordner hinzufügen
Suchen Sie Ihre extrahierten Ordner und fügen Sie logback-core-1.0.7.jar , logback-classic-1.0.7.jar von hinzu logback-1.0.7 und slf4j-api-1.7.0.jar im Ordner slf4j-1.7.0 . Klicken Sie auf OK, um zum Projekt zurückzukehren.
* Falls Sie keine der oben genannten Umgebungen verwenden, sollten Sie die obigen 3 Gläser manuell in Ihren Klassenpfad einfügen. Bei der Dependenz Ihres Betriebssystems ist eine andere Vorgehensweise zu beachten.
Zunächst sollten Sie die erforderlichen Abhängigkeiten importieren:
%Vor%Jede Klasse, die Sie protokollieren möchten, sollte einen privaten Logger haben:
%Vor%Indem Sie für jede Klasse einen separaten Logger haben, bieten Sie mehr Flexibilität und einfachere Änderung Ihrer Logging-Levels (WARN, ERROR, INFO, DEBUG).
Je nach dem Protokolllevel, das Sie verwenden möchten, sollten Sie
haben %Vor%Es besteht auch die Möglichkeit, komplexere Methodenaufrufe zu verwenden, die von Ihren Anforderungen abhängen. Wenn Sie beispielsweise den StackTrace debuggen und anzeigen möchten, sollten Sie
verwenden %Vor%Zum Beispiel:
%Vor%* An dieser Stelle haben Sie ein einfaches Logging-System, ohne weitere Konfigurationen hinzuzufügen. Falls Sie eine erweiterte Konfiguration wünschen lese die erweiterten Logbucheinstellungen, die ich unten gepostet habe.
Um ein fortgeschritteneres Protokollierungssystem zu haben, sollten Sie eine zusätzliche Datei erstellen, die die gesamte Protokollierungskonfiguration enthält. In diesem Beispiel werde ich logback.xml verwenden. Weitere Informationen zu den verschiedenen Logbuchdateien finden Sie in der Logbackkonfiguration .
An diesem Punkt sollten Sie einen Ordner mit dem Namen resources erstellen und ihn im Buildpfad Ihres Projekts hinzufügen.
Eclipse-Handbuch
Erstellen Sie einen Ordner namens resources (Sie müssen den Ordner in Ihrem Projekt sehen)
Gehe in Eclipse zu deinem Projekt und klicke mit der rechten Maustaste darauf. Wählen Sie Eigenschaften .
Wählen Sie im linken Bereich Java-Erstellungspfad
Wählen Sie die Registerkarte Quelle
Klicken Sie auf Ordner hinzufügen
Markieren Sie den von Ihnen erstellten Ressourcenordner und klicken Sie auf OK. Klicken Sie auf OK, um zum Projekt zurückzukehren.
An dieser Stelle sollten Sie den Ressourcenordner als Paket sehen.
Netbeans-Leitfaden
Erstellen Sie einen Ordner namens resources (er ist in der Projektansicht noch nicht sichtbar. Nur in der Dateiansicht)
Gehe zu deinem Projekt in Netbeans und klicke mit der rechten Maustaste darauf. Wählen Sie Eigenschaften .
Wählen Sie im linken Bereich Quellen
Klicken Sie in den Quellpaketordnern auf Ordner hinzufügen .
Wählen Sie den Ordner Ressourcen und klicken Sie auf OK.
Sie sollten den erstellten Ordner als Paket sehen.
* Der Name des Ordners könnte ein beliebiger Name sein. Aus praktischen Gründen habe ich es als Ressourcen bezeichnet.
Folgendes gilt sowohl in Eclipse als auch in Netbeans.
* Falls Sie nicht die folgende Datei in Ihrem Klassenpfad haben, die bestimmte Einstellungen im Logging-Framework spezifiziert, wird die Root-Logger-Ebene automatisch in DEBUG zugewiesen. Das bedeutet, dass alle Protokollierungsstufen protokolliert werden. Debuggen ist die höhere Ebene.
Platziere in logack.xml das folgende Tag.
%Vor%
Die obige Konfiguration enthält zwei verschiedene Appender, einen in der Konsole und einen in einer Datei namens log.txt. Die Datei wird in einen Ordner namens log gestellt. Falls das Ordnerprotokoll nicht existiert, wird es automatisch erstellt.
Das Muster, das Sie verwenden werden, hängt von Ihnen ab und wie informativ Ihre Nachrichten sein werden. In der aktuellen Konfiguration ist der Konsolen-Appender weniger beschreibend und zeigt nur die Protokollierungsstufe und die Nachricht an, verglichen mit dem Datei-Appender, der die Protokollierungsstufe, den Thread-Namen, den Klassennamen, die Zeit und die Nachricht enthält. Der Wert append wird auf false gesetzt, um nach jedem Lauf Ihrer Anwendung eine neue Protokolldatei zu erstellen.
Die obige Konfiguration verwendet 2 verschiedene Logger für das gleiche Paket. Der erste Logger druckt nur die Info-Nachrichten in der Konsole und der zweite Logger druckt die Debug-Meldungen in eine Datei. Dies wird erreicht, indem der Filter verwendet wird, der in den Appendern platziert ist.
* Im Logger-Namen können Sie den vollständig qualifizierten Namen Ihrer Klasse oder den Paketnamen angeben. In diesem Fall habe ich die Paketstruktur angenommen org.test und platzierte die Klasse in diesem Paket. Wenn du das hast vollqualifizierter Name der Klasse, die die Protokollierungskonfiguration sein wird nur für diese Klasse angewendet. Wenn Sie den Paketnamen verwenden, werden alle Klassen innerhalb dieses Pakets werden dem oben genannten folgen Konfiguration.
Es gibt viele verschiedene Möglichkeiten, die Appender und Logger zu verwenden, und es hängt von Ihren Bedürfnissen und der Komplexität Ihres Programms ab. Je nach der Situation, die Sie beschrieben haben, glaube ich, dass die obige Lösung Ihre Bedürfnisse erfüllen könnte.
P.S. Weitere Beschreibungen und weiterführende Konfigurationen finden Sie im Logbuch-Handbuch
solche Dinge werden normalerweise mit Loggern und verschiedenen Loglevels behandelt.
Sie haben in der Regel 3 Protokollebenen, allgemeine Protokolle, Warnungen und Fehler. Wenn Sie ausgeben, entscheiden Sie, auf welcher Ebene eine Nachricht steht
Wenn Sie Ihre Anwendung starten, sagen Sie Ihrem Logger, welche Stufe er anzeigen soll. Für Ihre Benutzer wird dies FEHLER sein, nur die schlimmsten Dinge sollten sichtbar sein, für Sie würden Sie alles ausgeben
Tags und Links java exception-handling