我在一个完全冻结 JVM 的应用程序中发现了一个错误。生成的堆栈跟踪将为开发人员提供有价值的信息,我想从 Java 控制台检索它。当 JVM 崩溃时,控制台被冻结,我无法再复制包含的文本。
有没有办法将 Java 控制台直接通过管道传输到文件或其他访问 Java 应用程序控制台输出的方法?
更新:我忘了提,没有改变代码。我是手动测试员。
更新 2:这是在 Windows XP 下,它实际上是一个 Web 启动应用程序。管道输出
javaws jnlp-url不起作用(空文件)。
我在一个完全冻结 JVM 的应用程序中发现了一个错误。生成的堆栈跟踪将为开发人员提供有价值的信息,我想从 Java 控制台检索它。当 JVM 崩溃时,控制台被冻结,我无法再复制包含的文本。
有没有办法将 Java 控制台直接通过管道传输到文件或其他访问 Java 应用程序控制台输出的方法?
更新:我忘了提,没有改变代码。我是手动测试员。
更新 2:这是在 Windows XP 下,它实际上是一个 Web 启动应用程序。管道输出
javaws jnlp-url不起作用(空文件)。
实际上可以在 Java 控制面板中激活跟踪。这将在跟踪文件中通过管道传输最终在 Java 控制台中的任何内容。
日志文件将结束于:
(如果您可以修改代码)您可以将该System.out
字段设置为不同的值:
System.setOut(new PrintStream(new FileOutputStream(fileName)));
如果您正在运行脚本(通过 调用程序java
),Unix
您可以执行以下操作:
/path/to/script.sh >& path/to/output.log
在 Mac 10.8.2 中,可以在/Users/<userName>/Library/Application Support/Oracle/Java/Deployment/log/
.
Before you have to enable logging from Java Control Panel. Option "Enable logging
" is at tab "Advanced
". Java Control Panel could be started from "System preferences
".
冻结的控制台可能意味着死锁(也可能意味着重复抛出异常)。您可以使用jstack
. jps
可能会使查找过程更容易。
try this guide it works for me. it also guides you that how you can set "System.setOut(fileStream);", "System.setErr(fileStream);"