(O+P)ut

(O+P)ut

(O+P)ut = OutPut

【Java入門】log4Jでprint文をやめてみる

f:id:mtiit:20181005085944j:plain
Javaでコードを書く時には、いつもeclipseを使ってます。そして、出力結果をコンソールで確認する時にはSystem.out.printなどを使っていました。

そんな中で、細やかな制御を行いながらコンソールに結果出力するツールにLog4Jというものがると聞いてさっそく使ってみました。


Log4Jの概要

そもそもLog4jとは、Javaのロギングユーティリティです。

Log4Jのメリットを箇条書きでまとめてみると

  • ログ生成の制御が簡単
  • 動作のパフォーマンスも良い
  • Apacheプロジェクトの一つなので信頼もできる

となります。

ただデメリットとしては、設定等の理解がやはり System.out.println よりかは学習コストがある点となります。



なので、まずはとてもシンプルな使い方をしてLog4Jに慣れていくためのHowToを記載してみましたのでご参考ください。


実際に使用

まずはLog4Jにはログを出力するか否かのレベルがあります。ざっと並べると、

    • FATAL
    • ERROR
    • WARN
    • INFO
    • DEBUG
    • TRACE

とあって上から順に出力する出力する優先度が高いです。

なので、動作テストとかをする際は広範囲なログを出力し、バグが減ってきて運用フェーズになると重大なメッセージのみを出力するといった柔軟な制御が可能です。

今回は、EclipseLog4Jをダウンロードし、簡単な使い方を行う設定について記載します。

まずは、Log4Jを試すためにファイルをプロジェクトの中に作成し、

import org.apache.log4j.*;

とインポートを試みてください。

おそらくエラーが出ます。
log4jをインストールしてないからですね。


私は
The Jakarta Site - Jakarta Downloads
のarchivesの中にlog4jというフォルダがあるのでjakarta-log4j-1.2.8.tar.gzをインストールしました。
バージョンはその都度で違ってるかもしれないですが、とりあえずこの手のファイルをインストールすると、そのフォルダの中の下図の位置にlog4jの実体jarファイルが確認できます。
f:id:mtiit:20150208115713p:plain


あとは、パスを通します。
プロジェクトを左クリック→プロパティ→Java Build Path→Add External JAR...で先ほどのjarファイルを追加します。

import org.apache.log4j.*;

のエラーは消えているはずです。

以下はサンプルコードです。

import org.apache.log4j.*;
public class Test {
	public static void main(String args[]){
		Logger logger = Logger.getLogger("Sample");
		BasicConfigurator.configure();
		logger.setLevel(Level.DEBUG);
		logger.debug("debug test");
		logger.info("info test");
	}
}

こちらを実行すれば、コンソールへの出力は

0 [main] DEBUG Sample  - debug test
1 [main] INFO Sample  - info test

となるはずです。

ここでのポイントは、
logger.setLevelのLevel.DEBUGをLevel.INFOに変更すればdebugは出力されません。

System.out.println()からの乗り換え第一歩としては、今まで記載していたprint文を全てINFOで出力する というのがよいかもしれません。
なれてくれば、細かな制御を入れたり出力先をログファイルにしてみたり、というステップですかね。

以上、log4jの入門記事でした。