倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

java.util.logging パッケージ 基礎の基礎

Maven2 で commons-logging 1.1 を使うのは気が乗らないので(前回参照)、Java の標準 API に含まれている java.util.logging パッケージの簡単な使い方を見てみましょう(一覧)。

参考 URL はJava TM Logging OverviewAPI ドキュメントです。

基本的な使い方は commons-logging と殆ど同じです。

サンプル・コード


とりあえず、サンプル・コードを書いてみると、こんな感じ(commons-logging の場合のサンプルは こちら):

import java.util.logging.Logger;
import junit.framework.TestCase;

public class JdkLoggingTest extends TestCase{
    
    // 1. Logger オブジェクトを取得する。
    private static Logger LOGGER 
        = Logger.getLogger(JdkLoggingTest.class.toString());
    
    public void test(){
        // 2. ログ出力メソッドを呼び出してログ出力。
        LOGGER.finest("finest");
        LOGGER.finer("finer");
        LOGGER.fine("fine");
        LOGGER.config("config");
        LOGGER.info("info");
        LOGGER.warning("warning");
        LOGGER.severe("severe");
    }
}

これを実行すると

2007/09/04 4:53:30 JdkLoggingTest test
情報: info
2007/09/04 4:53:30 JdkLoggingTest test
警告: warning
2007/09/04 4:53:30 JdkLoggingTest test
致命的: severe

と出力されます。

API の使い方


commons-logging でのログの取り方の手順は

  1. Log オブジェクトを取得する。
  2. Log オブジェクトのログ出力メソッド*1を呼び出して、ログを出力する。

でした。 java.util.logging でも大まかな手順は同じです:

  1. Logger オブジェクトを取得する。
  2. Logger オブジェクトのログ出力メソッドを呼び出して、ログを出力する。

API レベルでの違いは:

  • ログを出力するためのクラスは Logger*2
  • Logger オブジェクトは Logger クラスの static メソッド、getLogger(String) を用いる*3。 引数の文字列は Logger の名前(ID)です。
  • ログ出力用のメソッドが違う。 詳しくは次節。

ログ・レベル


Logger クラスに定義されているログ出力用のメソッドを表にまとめておきます:

ログ・レベル ログ出力メソッド 内容 コンソール出力 commons-logging では
SEVERE severe() 深刻な失敗 Yes fatal(), error()
WARNING warning() 潜在的な問題 Yes warn()
INFO info() 情報 Yes info()
CONFIG config() 静的な構成 No -
FINE fine() トレース情報 No debug()
FINER finer() 少し詳細なトレース情報 No -
FINEST finest() 詳細なトレース情報 No trace()

*1:バージョン1.1では fatal(), error(), warn(), info(), debug(), trace() の6つ。

*2:commons-logging では Log クラス。

*3:commons-logging では LogFactory#getLog(Class) メソッド。