2011-12-05 126 views
0

我需要了解Tomcat如何能够捕获JVM垃圾回收控制台输出日志并将其放入catalina.out中。Tomcat如何将verbose:gc控制台输出重定向到catalina.out

我试图重定向的System.outSystem.err的,但没能做到。我无法获得GC日志的输出。
然而,当激活-verbose :在Tomcat中GC(在catalina.sh,* JAVA_OPT *),后来cheking输出在catalina.out的我能看到GC日志。这怎么可能? Tomcat如何能够将该输出重定向到文件?

也许你知道使用java代码重定向某些java应用程序内的GC日志输出吗?

预先感谢您。

+0

你尝试'java.lang.System.setErr(...)'和'java.lang.System.setOut( ......)'? –

+0

是的,我使用System.setErr()和System.setOut()。这不起作用,新的出错(或错误的源代码)被重定向,我使用System.out.print()写入的所有内容都被写入到我用作目的地的文件中,但是当GC打印出某些内容时,它不会通过“out “变量(既不是槽也不是),并在控制台上结束。 – Hyb

+2

我应该在catalina.sh中更深入地观察。启动命令以'>>“$ CATALINA_OUT”2>&1“&”'结尾,因此控制台中出现的所有内容都会重定向到catalina.out。 问题解决了。 – Hyb

回答

0

Tomcat的确必须使用System.setErr()和System.setOut()。关于这个网站上其他地方的工作原理有很多讨论:java: "final" System.out, System.in and System.err?

Tomcat将所有控制台输出重定向到catalina.out。您可能可以通过JULI日志设置进行配置。

2

它与代码无关; catalina.out文件不是“真正的日志”,它只是一个文件,标准tomcat启动命令会将其输出。

换句话说,这是一个shell的问题,而不是Java的:)

相关问题