【发布时间】:2012-01-13 01:14:45
【问题描述】:
我需要了解 Tomcat 如何能够捕获 JVM 垃圾收集控制台输出日志并将其放入 catalina.out。
我尝试重定向 System.out 和 System.err,但没有成功。我无法获得 GC 日志的输出。
但是,当在 Tomcat 中激活 -verbose:gc (在 catalina.sh,*JAVA_OPT* 中)并稍后检查 catalina.out 中的输出时,我能够看到 GC日志。这怎么可能?
Tomcat 是如何将该输出重定向到文件的?
也许您知道使用 java 代码在某些 java 应用程序中重定向 GC 日志输出的任何方法吗?
提前谢谢你。
【问题讨论】:
-
你试过
java.lang.System.setErr(...)和java.lang.System.setOut(...)吗? -
是的,我使用了 System.setErr() 和 System.setOut()。这不起作用,新输出(或错误源)被重定向,我使用 System.out.print() 编写的所有内容都写入我用作输出目标的文件中,但是当 GC 打印某些内容时,它不会通过“输出” " 变量(也不是低谷错误)并最终出现在控制台上。
-
我应该更深入地查看 catalina.sh。启动命令以
>> "$CATALINA_OUT" 2>&1 "&"结尾,因此控制台中出现的所有内容都被重定向到 catalina.out 。问题解决了。