我在应用程序中发现了一个完全冻结JVM的错误。生成的堆栈跟踪将为开发人员提供有价值的信息,我想从Java控制台检索它。当JVM崩溃时,控制台被冻结,我无法再复制包含的文本。
有没有办法将Java控制台直接传递给文件或其他一些访问Java应用程序控制台输出的方法?
更新:我忘记提及,而不更改代码。我是一名手动测试员。
更新2:这是在Windows XP下,它实际上是一个Web启动应用程序。管道输出
javaws jnlp-url不起作用(空文件)。
答案 0 :(得分:23)
实际上可以在Java控制面板中激活tracing。这将在跟踪文件中管理最终在Java控制台中的任何内容。
日志文件最终会出现在:
答案 1 :(得分:12)
(如果您可以修改代码),可以将System.out
字段设置为其他值:
System.setOut(new PrintStream(new FileOutputStream(fileName)));
如果您从java
运行脚本(通过Unix
调用该程序),您可以这样做:
/path/to/script.sh >& path/to/output.log
答案 2 :(得分:8)
在Mac 10.8.2中,可以在/Users/<userName>/Library/Application Support/Oracle/Java/Deployment/log/
找到日志。
必须从Java控制面板启用日志记录之前。选项“Enable logging
”位于“Advanced
”标签处。 Java控制面板可以从“System preferences
”启动。
答案 3 :(得分:2)
冻结控制台可能意味着死锁(也可能意味着重复抛出异常)。您可以使用jstack
获取堆栈转储。 jps
可能会让您更轻松地找到这个过程。
答案 4 :(得分:0)
试试this guide它对我有用。它还指导您如何设置“System.setOut(fileStream);”,“System.setErr(fileStream);”