不应该为根 Logger 设置级别也为根 Logger 的所有子记录器设置级别吗?
不,显然您正在创建一个新的 Logger 对象。getLogger 的 Javadoc状态:
如果创建了一个新的记录器,它的日志级别将基于 LogManager 配置进行配置,并且它还将配置为将日志输出发送到其父处理程序。
请注意,即使之前有一个同名的 Logger 对象,您也不能依赖getLogger
返回相同的对象,因为如果没有对该对象的强引用,它可能已被垃圾回收。
如果您的目标是在项目中创建具有相同日志级别的所有 Logger 对象,则不应以编程方式进行,而应通过配置进行。这就是java.util.logging
派上用场的地方。总体优势是您可以在不同的日志级别运行应用程序,甚至无需更改一行代码。
只需编辑您的配置文件(本质上就是上面提到的LogManager configuration
)。它被调用logging.properties
并位于您的 JRE 目录中。在那里您可以编辑最后一段并配置项目范围或类缩小的日志级别:
############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################
myProject.MyClass.level = FINE
myProject.MyOtherNotSoImportantClass.level = INFO
mySecondProject.MainClass.level = NONE
一个更好的解决方案是复制logging.properties
到您的项目目录并调用您的应用程序
java -Djava.util.logging.config.file=./src/test/resources/logging.properties