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