如何强制 Tomcat(嵌入 Spring 引导)使用标准 java.util.logging 而不是 JULI?

How to force Tomcat (embedded in Spring Boot) to use standard java.util.logging instead of JULI?

我 运行 Tomcat 作为 Spring 启动应用程序内部的嵌入式服务器,因此 JULI 中的所有附加功能,例如多个 class 加载器等不需要,只会妨碍。

我只想让我的应用程序直接使用 java.util.logging 而无需 JULI 的额外复杂性。我想要一个平面配置,其中所有内容都直接流向 java.util.logging 以及我配置它的方式。

我怎样才能放弃 JULI?

更新

我遇到的实际问题是我无法加载自定义 Handler...获取 ClassNotFound。我最初认为这是由 JULI 引起的,但实际上似乎与 Spring 引导系统 Class 管理器不愿意从 BOOT-INF.

加载 classes 有关

JULI 只是 Tomcat 用于其内部日志记录的日志外观(参见 javadoc) based on Apache Commons Logging。它不是一个日志框架,本身不执行任何日志记录。

默认情况下,它使用 java.util.logging 简单明了的配置方式。

您可以在独立 Tomcat 中找到的附加功能(根据 class 加载程序配置,相同 class 的多个处理程序等)由 [=18= 提供].为了使用它,您需要设置:

-Djava.util.logging.logmanager=org.apache.juli.ClassLoaderLogManager

作为 JVM 参数(在其他任何地方它都可能被忽略)。

Tomcat 的启动脚本添加了上面提到的 Java 系统 属性,但是您的 Spring 启动应用程序几乎肯定不会。因此,您的应用程序使用 java.util.logging 简单明了(除非您使用 spring-boot-starter-logging,在这种情况下 java.util.logging 被重定向到 LogBack)。

TL;DR:默认情况下 Tomcat JULI 只是将消息转发给 java.util.logging。没有并发症。