在Java中,全局日志记录器和根日志记录器有什么区别?

6
在Java类java.util.logging.Logger中,全局日志记录器和根日志记录器有什么区别?它们是相同的吗?Logger :: getGlobal方法返回全局日志记录器。重复调用Logger :: getParent直到结果为null将产生根日志记录器。当我使用空字符串作为名称参数调用Logger :: getLogger时,这会返回全局日志记录器还是根日志记录器? http://docs.oracle.com/javase/9/docs/api/java/util/logging/Logger.html

1
请参见 https://dev59.com/S3nZa4cB1Zd3GeqPlRHt 了解全局记录器。因此,根记录器和全局记录器不应该是相同的。 - lwi
1个回答

7
在Java的java.util.logging.Logger类中,全局日志记录器和根日志记录器有什么区别?它们是相同的吗? 不,它们不相同。
public static void main(String[] args) throws Exception {
    System.out.println(Logger.getLogger(""));
    System.out.println(Logger.getGlobal());
    System.out.println(Logger.getGlobal().getParent());
}

例如,将输出:

java.util.logging.LogManager$RootLogger@27082746
java.util.logging.Logger@66133adc
java.util.logging.LogManager$RootLogger@27082746

如您所见,根记录器是全局记录器的父记录器。根记录器用于向子记录器传播级别,并用于保存可以捕获所有已发布日志记录的处理程序。全局记录器只是一个已保留供因果使用的命名记录器。它是 logging 框架的 System.out,因此仅在需要丢弃代码时使用。
当名称参数为空字符串时,Logger::getLogger 将返回 root 记录器还是 global 记录器?
它将返回根记录器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接