在Java中,global logger和root logger有什么区别?

In Java, what is the difference between the global logger and the root logger?

在Java class java.util.logging.Logger中,全局记录器和根记录器有什么区别?它们相同吗? Logger::getGlobal 方法 return 是全局记录器。并重复调用 Logger::getParent 直到结果为 null 将产生根记录器。当我使用空字符串调用 Logger::getLogger 作为名称参数时,这个 return 是全局记录器还是根记录器?

http://docs.oracle.com/javase/9/docs/api/java/util/logging/Logger.html

In the Java class java.util.logging.Logger, what is the difference between the global and the root loggers? Are they the same?

No they are not the same.

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

如您所见,根记录器是全局记录器的父级。根记录器用于将级别传播到子记录器,并用于保存可以捕获所有已发布日志记录的处理程序。全局记录器只是一个已命名的记录器,已保留供因果使用。它是日志框架的System.out,因此仅用于丢弃代码。

Logger::getLogger with an empty string for the name argument, does this return the global logger or the root logger?

它 returns 根记录器。