Headline About TechLog Download Java VBA Link


August 9, 2007. Thursday.

Javaの格言:【小技】簡単なログ出力方法

Eclipseのような統合開発環境が整いつつあるとはいえ、今でもSystem.out.printlnを利用したデバッグなどを行うことは多くあります。しかし、コンソールが使えない、或いは長時間の試験をしたい場合など、とっさにログをファイルに残したいことがあります。

JLogger等を用い計画的にログを出力するなり、ログ出力クラスを自作するなりするのが本筋ではありますが、全てのSystem.out.println()を置き換えたりするのは非常に大変、一時的な話、或いは個人で開発しているアプリなどであれば以下のような手段が使えます。


// これを一度どこかで呼んでおく。
System.setOut(new PrintStream(new FileOutputStream("data.txt")));

// 以降はprintするだけでファイルに書き出される
System.out.println("出力文字列");

これだけ。System.outの出力先をコンソールからファイルに変えてしまいます。アプリ起動時に一度呼んでおけばVMを落とすまで、全クラスのSystem.out.println()がファイルに吐き出されます。同様にsetErr()を呼べば、System.errの出力先も変えることが出来ます。

また、コンソールやログファイル領域のない携帯端末のログをリアルタイム観測したい場合など、Socket接続からOutputStreamを取得して、観測端末に出力することも可能です。非常に便利な機能ですが、長くjavaをやっている人でも意外と知りません。是非試してみてください。