Spring Boot - 设置使用 Java Util Logging (jul) 的外部 jar 的日志记录级别

kuc*_*ram 5 logging logback java.util.logging spring-boot

根据 Spring Boot 文档,可以通过使用 Spring Boot Logging Starter 并在应用程序属性中设置适当的 logging.level 来设置多个日志记录框架(jul、slf4j 等)的日志记录级别。除了我使用的库使用 jul 和日志级别 Level.FINER 进行日志记录外,一切正常。但是,Level.INFO 已正确记录。

我将 application.properties 中的级别设置为:

logging.level.=TRACE
Run Code Online (Sandbox Code Playgroud)

它应该根据SLF4JBridgeHandler记录所有内容。

我是否缺少某些东西,或者是 logback 的问题(由初学者使用)而不是我的误解?

小智 1

SLF4JBridgeHandler 仅从 jul Loggers 上启用的级别接收 LogRecord(此事实隐藏在安装方法的 javadoc 中)

由于默认的 JUL 配置仅记录 INFO 或更高级别,因此网桥不会接收 FINE/FINER/FINEST 级别。

为了测试这一点,您可以像这样强制 root jul 记录器的级别:

LogManager.getLogManager().getLogger("").setLevel(Level.FINE);
Run Code Online (Sandbox Code Playgroud)

(或者在 JVM 上使用 .level=FINE 显式配置自定义logging.properties)

此配置必须通过slf4j级别配置完成(通过application.properties中的logback.xml或logging.level.xxxxxx属性)

(请注意,您应该在 jul 生产配置中更加具体,因为 slf4j 文档警告“jul启用”但“slf4j禁用”日志对性能的影响)