Wie kann ich Rohr in eine Datei die Java-Konsole ausgegeben?
-
06-07-2019 - |
Frage
fand ich einen Fehler in einer Anwendung, die die JVM vollständig gefriert. Die erzeugte stacktrace würde wertvolle Informationen für die Entwickler zur Verfügung stellen, und ich würde es von der Java-Konsole abrufen möchten. Wenn die JVM stürzt, wird die Konsole eingefroren und ich kann den enthaltenen Text nicht mehr kopiert werden.
Sie haben Art und Weise die Java-Konsole direkt in eine Datei Rohr oder einige andere Mittel, um die Konsolenausgabe von einer Java-Anwendung zugreifen?
Update: Ich habe vergessen zu erwähnen, ohne den Code zu ändern. Ich bin ein manueller Tester.
Update 2: Dies ist unter Windows XP und es ist eigentlich eine Web-Start-Anwendung. die Ausgabe von
javaws jnlp-urlnicht funktioniert (leere Datei) kochend.
Lösung
Eigentlich kann man aktivieren im Java Control Panel Tracing . Dies wird Rohr alles, was in der Java-Konsole in einer Suchkartei endet.
Die Log-Dateien werden am Ende in:
-
/. Java / deployment / log auf Unix / Linux -
\ Sun \ Java \ Deployment \ log unter Windows - / ~ / Library / Caches / Java / log auf OS X
Andere Tipps
(Wenn Sie den Code ändern können) können Sie das System.out
Feld auf einen anderen Wert einstellen:
System.setOut(new PrintStream(new FileOutputStream(fileName)));
Wenn Sie ein Skript ausgeführt wird (das Programm über java
Aufruf) von Unix
könnten Sie tun:
/path/to/script.sh >& path/to/output.log
In Mac 10.8.2 Protokolle können bei /Users/<userName>/Library/Application Support/Oracle/Java/Deployment/log/
finden.
Bevor Sie die Protokollierung von Java Control Panel zu ermöglichen haben. Option "Enable logging
" ist im Reiter "Advanced
". Java Control Panel von "System preferences
" gestartet werden konnte.
Eine gefrorene Konsole bedeutet wahrscheinlich einen Deadlock (es auch wiederholt Werfen einer Ausnahme bedeuten könnte). Sie können einen Stack Dump mit jstack
erhalten. jps
kann den Prozess einfacher gefunden werden.
dieser Führer es funktioniert für mich. es führt Sie auch, dass, wie Sie einstellen können "System.setOut (filestream);", "System.setErr (filestream);"