Java 9引入了一个新的记录器,即 java.lang.System.Logger
,但我们一直都有 java.util.logging.Logger
。
该记录器有什么新功能以及它有什么改进?
最佳答案
尽管它们之间可能存在细微的差异,但最重要的差异是System.Logger
(在java.base
模块中)是一个外观,而java.util.logging.Logger
(在java.logging
中)是一个实现。
这背后的核心思想是让库作者在其代码中编写无依赖日志记录,并让该库的每个用户提供自己喜欢的实现。这也意味着整个应用程序将使用相同的日志记录框架,而不必调整代码库中每个库的记录器。
从JDK 9开始,有可能在模块图中没有java.logging
,这实际上使您可以释放所需的任何实现,而无需在JDK镜像中包含无用的软件包。如果存在java.logging
,除非存在其他后端,否则它将用作默认后端。如果没有后端,它将只打印到System.err
。