2011-12-05 158 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的:)

相關問題