2013/12/16

java System.outの出力先をファイルにする

catalina.outを生成するには、どうしたらいいの?
System.outおよびSystem.errは、ともにcatalina.outへ書き出されます。 しかしながら、swallowOutput属性経由でこれを抑制し、異なるログファイルに送出することもできます。
そうすることで、catalina.outは生成されなくなります。 しかし、そのことが問題にならないわけではありません。 というのも、ロギングパッケージを使用するようになってから、標準出力へ書き出されなくなりましたよね?
詳しいことは log4jの設定例 および catalina.outの生成に関するスレッド を参照してください。

File outFile  = new File("/var/log/jiang/stdout.log");
PrintStream outStream = new PrintStream(new FileOutputStream(outFile));
System.setOut(outStream);


File errFile  = new File("/var/log/jiang/stderr.log");
PrintStream errStream = new PrintStream(new FileOutputStream(errFile));
System.setErr(errStream);