2011-12-05 24 views
0

TomcatがJVMガベージコレクションコンソール出力ログを捕捉してcatalina.outに入れる方法を理解する必要があります。Tomcatはverbose:gc console出力をcatalina.outにどのようにリダイレクトしますか

System.outSystem.errをリダイレクトしようとしましたが、できません。私はGCログの出力を得ることができませんでした。
しかし、Tomcat(catalina.sh、* JAVA_OPT *)で-verbose:gcを有効にしてから、出力をで確認すると、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が何かを出力すると、変数(トラフエラーもありません)、コンソールで終了します。 – 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起動コマンドが出力するすべてのファイルをプッシュするファイルです。言い換えれば

、これはシェルの問題ではなく、Javaの1 :)

関連する問題