java.util.logging.Logger与java.lang.System.Logger之间的区别

问题描述 投票:4回答:2

Java 9引入了一个新的记录器,即java.lang.System.Logger,但我们一直都有java.lang.System.Logger

此记录器有什么新功能以及它有什么改进?

java logging java-9
2个回答
1
投票
  • [java.util.logging.Logger在模块java.util.logging.Logger中定义而java.lang.System.Logger在模块中定义java.base
  • 增强了外部框架支持,例如SLF4J或Log4J。
  • 能够处理引导程序问题,从而使平台类可以在初始化日志使用者之前记录消息。

日志记录级别的更改与java.base相比有很大不同:

java.util.logging.Logger

[如果您想了解java.logging背后的动机,强烈建议您阅读java.logging


-1
投票

虽然它们之间可能有细微的差异,但是最重要的区别是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

© www.soinside.com 2019 - 2024. All rights reserved.