Java 9引入了一个新的记录器,即java.lang.System.Logger
,但我们一直都有java.lang.System.Logger
。
此记录器有什么新功能以及它有什么改进?
java.util.logging.Logger
在模块java.util.logging.Logger
中定义而java.lang.System.Logger
在模块中定义java.base
日志记录级别的更改与java.base
相比有很大不同:
java.util.logging.Logger
[如果您想了解java.logging
背后的动机,强烈建议您阅读java.logging
虽然它们之间可能有细微的差异,但是最重要的区别是util.logging.Logger
(在+--------------------------+-----+-------+-------+------+---------+--------+-----+
| System.Logger Levels | ALL | TRACE | DEBUG | INFO | WARNING | ERROR | OFF |
+--------------------------+-----+-------+-------+------+---------+--------+-----+
| java.util.logging Levels | ALL | FINER | FINE | INFO | WARNING | SEVERE | OFF |
+--------------------------+-----+-------+-------+------+---------+--------+-----+
模块中)是facade,而java.lang.System.Logger
(在JEP 264: Platform Logging API and Service中)是实现。
背后的核心思想是让库作者在其代码中编写无依赖日志记录,并让该库的每个用户提供自己喜欢的实现。这也意味着整个应用程序将使用相同的日志记录框架,而不必调整代码库中每个库的记录器。
自JDK 9起,可能在模块图中没有System.Logger
,这实际上使您可以释放所需的任何实现,而无需在JDK映像中包含无用的软件包。如果存在java.base
,除非存在其他后端,否则它将用作默认后端。如果没有后端,它将仅打印到java.util.logging.Logger
。