株式会社イーブ|未経験・転職の方も就職可能。Javaプログラマー育成のエキスパート

HOMEJAVA技術者育成システム開発求人情報個人情報保護

第 71 回 ~ ロギングその11 ~

トップページ > Java技術者育成 > Javaワンポイント > 第 71 回 ~ ロギングその11 ~

引き続き「ロギング」をテーマにしていきます。


前回はロギングの設定の切り替えのためにLogManagerを使いました。
今回はLogManagerの別の機能の解説をします。


LogManagerは前回の機能の他に、Loggerの階層化された名前空間の管理をしています。
名前付きLoggerはすべて、この名前空間内に格納される仕組みになっているのです。


以下のサンプルでは、LogManagerの管理下のLoggerの名前とログレベルを出力しています。
またLogManagerのresetメソッドの使用により、Loggerの構成のリセットも行っています。
リセット前とリセット後の出力結果がどうなるか確認してみましょう。(Java5以上対応)



import java.util.Collections;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;


public class LogManagerTest {


    public static void main(String[] args) throws Exception {


        // Loggerを取得、Levelを設定
        Logger.getLogger(LogManagerTest.class.getName()).setLevel(Level.FINE);
        Logger.global.setLevel(Level.CONFIG);
        Logger.getLogger("").setLevel(Level.ALL);


        // LogManager取得
        LogManager logManager = LogManager.getLogManager();


        // LogManagerの管理下のLoggerとログレベル表示
        System.out.println("リセット前");
        for (String loggerName : Collections.list(logManager.getLoggerNames())) {
            Logger logger = logManager.getLogger(loggerName);
            System.out.println(logger.getName() + "のログレベルは" + logger.getLevel());
        }


        // LogManagerのリセット
        logManager.reset();
        System.out.println();


        // LogManagerの管理下のLoggerとログレベル表示
        System.out.println("リセット後");
        for (String loggerName : Collections.list(logManager.getLoggerNames())) {
            Logger logger = logManager.getLogger(loggerName);
            System.out.println(logger.getName() + "のログレベルは" + logger.getLevel());
        }
    }
}



名前が表示されないLoggerは以前説明したルートロガーです。
リセット後、ルートロガーのLevelがINFOに戻り、それ以外のLoggerのレベルはnullになります。
またルートロガー以外のLoggerに付随していたHandlerは全て削除されます。


[Javaワンポイント]内の前後の記事
第 72 回 ~ JUnit4 その1 ~
→ 第 71 回 ~ ロギングその11 ~
第 70 回 ~ ロギングその10 ~


■更新日時での前後の記事
10月1日 お天気
→ 第 71 回 ~ ロギングその11 ~
9月30日 お天気