第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を使用した際、コンソールにも出力されていたのは、
 実はルートロガーが親ロガーとなっていたからだったのです。
コンソールに出力されることに疑問を持たれていた方は、今日ですっきりしたと思います。		

