如何将 Java 控制台输出通过管道传输到文件?

2022-09-02 19:42:58

我在一个应用程序中发现了一个完全冻结JVM的错误。生成的堆栈跟踪将为开发人员提供有价值的信息,我想从Java控制台中检索它。当 JVM 崩溃时,控制台被冻结,我无法再复制包含的文本。

有没有办法将 Java 控制台直接传送到文件或其他一些访问 Java 应用程序控制台输出的方法?

更新:我忘了提,没有改变代码。我是一名手动测试人员。

更新2:这是在Windows XP下,它实际上是一个Web启动应用程序。管道输出

javaws jnlp-url
不起作用(空文件)。

答案 1

实际上,可以在Java控制面板中激活跟踪。这将通过管道传输最终在 Java 控制台中的跟踪文件中的任何内容。

日志文件将最终在:

  • <user.home>/.java/deployment/log on Unix/Linux
  • <用户应用程序数据文件夹>\Sun\Java\Deployment\Log on Windows
  • /~/Library/Caches/Java/log on OS X

答案 2

(如果可以修改代码),则可以将字段设置为其他值:System.out

System.setOut(new PrintStream(new FileOutputStream(fileName)));

如果您正在运行脚本(通过 调用程序),则可以执行以下操作:javaUnix

/path/to/script.sh >& path/to/output.log