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-url
nicht funktioniert (leere Datei) kochend.

War es hilfreich?

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);"

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top