如何强制 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
。没有并发症。
我 运行 Tomcat 作为 Spring 启动应用程序内部的嵌入式服务器,因此 JULI 中的所有附加功能,例如多个 class 加载器等不需要,只会妨碍。
我只想让我的应用程序直接使用 java.util.logging
而无需 JULI 的额外复杂性。我想要一个平面配置,其中所有内容都直接流向 java.util.logging
以及我配置它的方式。
我怎样才能放弃 JULI?
更新
我遇到的实际问题是我无法加载自定义 Handler
...获取 ClassNotFound
。我最初认为这是由 JULI 引起的,但实际上似乎与 Spring 引导系统 Class 管理器不愿意从 BOOT-INF
.
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
。没有并发症。