Ich habe eine Konsolenanwendung, die mit der Hardware interagiert. Meine Idee war, alle Ausnahmen mit ihren Stacktraces zu protokollieren, so dass wertvolle Informationen nicht verloren gehen, da keine Pipe zu einer Datei vorhanden ist.So behandeln Sie Ausnahmen in der Konsolenanwendung
Aber wie mit dem Speicherort dieser Datei umgehen? Ich kann nicht jedes Mal nach einem Pfad fragen.
Deshalb dachte ich, nur die Datei neben der ausführbaren Datei. Aber kann nicht sicher sein, wo die App wohnen wird. Und ich habe nicht eine eindeutige Antwort auf „wie man den App Weg“
I found:new java.io.File("").getAbsolutePath();
aber keine Erklärung, wie das funktioniert gefunden.
And:getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
Aber die op sagte diese nur kann Arbeit. Gibt es eine andere Möglichkeit, das ErrorLogging zu handhaben/eine sichere Methode, um den App-Pfad zu erhalten?
Wie wäre es mit einem der Standard-Logging-Frameworks und folgen Sie deren Dokumentation. Sie könnten z.B. Eine Kombination aus slf4j und Logback und der Konfiguration des letzteren definiert, wohin die Logs gehen, in eine Datei, in eine ElasticSearch-Instanz oder in das Terminal. Wenn Sie dann nach einer Datei suchen, kann dies entweder absolute oder relative Position sein ... –
ein relativer Pfad zur App oder zum aktuellen Verzeichnis? – gismo
Dies ist die Frage zu dem bestimmten Protokollierungsrahmen, den Sie verwenden. In Bezug auf Logback wird die folgende Antwort helfen: http://stackoverflow.com/questions/16480052/is-there-a-way-in-logback-xml-to-specify-file-log-destination-through-classpath –