Java Tomcat如何将verbose:gc控制台输出重定向到catalina.out

Java Tomcat如何将verbose:gc控制台输出重定向到catalina.out,java,linux,tomcat,logging,Java,Linux,Tomcat,Logging,我需要了解Tomcat是如何捕获JVM垃圾收集控制台输出日志并将其放入catalina.out的 我试图重定向System.out和System.err,但无能为力。我无法获得GC日志的输出。 然而,当激活Tomcat中的-verbose:gc(在catalina.sh中,*JAVA_OPT*)并随后检查catalina.out中的输出时,我能够看到gc日志。这怎么可能? Tomcat是如何将输出重定向到文件的 也许您知道在某个java应用程序中使用java代码重定向GC日志输出的方法吗 提前感

我需要了解Tomcat是如何捕获JVM垃圾收集控制台输出日志并将其放入catalina.out的

我试图重定向System.out和System.err,但无能为力。我无法获得GC日志的输出。
然而,当激活Tomcat中的-verbose:gc(在catalina.sh中,*JAVA_OPT*)并随后检查catalina.out中的输出时,我能够看到gc日志。这怎么可能? Tomcat是如何将输出重定向到文件的

也许您知道在某个java应用程序中使用java代码重定向GC日志输出的方法吗


提前感谢您。

Tomcat确实在使用System.setErr()和System.setOut()。在本网站的其他地方有一个很好的讨论:


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

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


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

您是否尝试过
java.lang.System.setErr(…)
java.lang.System.setOut(…)
?是的,我使用了System.setErr()和System.setOut()。这不起作用,新的out(或err源)被重定向,我使用System.out.print()编写的所有内容都被写入我用作out目标的文件中,但当GC打印某些内容时,它不会通过“out”变量(也不会通过TOUR err)得到,并在控制台上结束。我应该在catalina.sh中进行更深入的研究。启动命令以“
>”$CATALINA_OUT“2>&1”和“
”结束,因此控制台中显示的所有内容都被重定向到CATALINA.OUT。问题解决了。