我在一个完全冻结 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);"