株式会社イーヴ

EeBlog(テクニカルブログ)

TOP > EeBlog > 第68回 ロギングその7

第68回 ロギングその7

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

前回は名前空間における親子関係を学びました。
今回はそれに関連して、「ルートロガー」について学びます。

ルートロガーとは、名前空間の頂点に立つLoggerオブジェクトのことです。
また全ての匿名ロガーの親でもあります。
このLoggerオブジェクトの名前は空文字となっています。

以下のサンプルコードでは、ルートロガーの親子関係を調べています。
またルートロガーのデフォルトのHandlerを表示します(J2SE1.4以上対応)

import java.util.Arrays;
 import java.util.logging.Logger;


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


         // RootLogger取得
        Logger rootLogger = Logger.getLogger("");


         // 子Logger取得
        Logger childLogger = Logger.getLogger("child");


         // 匿名Logger取得
        Logger anonymousLogger = Logger.getAnonymousLogger();


         // 親子関係の判定
        System.out.println(childLogger.getParent().equals(rootLogger));
         System.out.println(anonymousLogger.getParent().equals(rootLogger));


         // RootLoggerのHandler表示
        System.out.println(Arrays.toString(rootLogger.getHandlers()));
     }
 }

他のLoggerオブジェクトの親がルートロガーであることが確認できましたね。
ルートロガーのデフォルトのHandlerがConsoleHandlerであることもわかりました。
過去のサンプルプログラムでFileHandlerを使用した際、コンソールにも出力されていたのは、
実はルートロガーが親ロガーとなっていたからだったのです。
コンソールに出力されることに疑問を持たれていた方は、今日ですっきりしたと思います。