JULLogger的父子关系

记录器父子关系
JUL 中 Logger 记录器之间是存在 “父子” 关系的,这种父子关系不是我们普遍认为的类之间的继承关系,关系是通过树状结构存储的。
JUL 在初始化时会创建一个顶层 RootLogger 作为所有 Logger 的父 Logger,RootLogger 是 LogManager 的内部类,默认的名称为空串。
以上的 RootLogger 对象作为树状结构的根节点存在的,将来自定义的父子关系通过路径来进行关联,父子关系同时也是节点之间的挂载关系。

代码示例:
 

@Test
public void test06() {
    // 创建两个 logger 对象,可以认为 logger1 是 logger2 的父亲
    // RootLogger 是所有 logger 对象的顶层 logger,名称默认是一个空的字符串
    Logger logger1 = Logger.getLogger("com.jul");
    Logger logger2 = Logger.getLogger("com.jul.JulTest");

    System.out.println(logger2.getParent() == logger1);
    System.out.println("----");
    
    System.out.println("logger1名称:" + logger1.getName() +
                       ",\n父Logger名称:" + logger1.getParent().getName() +
                       ",\n父Logger引用:" + logger1.getParent());
    System.out.println("----");
    
    System.out.println("logger2名称:" + logger2.getName() +
                       ",\n父Logger名称:" + logger2.getParent().getName() +
                       ",\n父Logger引用:" + logger2.getParent());
    System.out.println("----");

    // 父亲所做的设置,也能够同时作用于儿子
    // 对 logger1 做日志打印相关的设置,然后我们使用 logger2 进行日志的打印
    logger1.setUseParentHandlers(false);

    ConsoleHandler handler = new ConsoleHandler();
    SimpleFormatter formatter = new SimpleFormatter();
    handler.setFormatter(formatter);
    logger1.addHandler(handler);
    handler.setLevel(Level.ALL);
    logger1.setLevel(Level.ALL);

    //儿子做打印
    logger2.severe("severe:错误信息");
    logger2.warning("warning:警告信息");
    logger2.info("info:默认信息");
    logger2.config("config:配置信息");
    logger2.fine("fine:详细信息(少)");
    logger2.finer("finer:详细信息(中)");
    logger2.finest("finest:详细信息(多)");
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值