這個問題在這里已經有了答案: 無法在 Spring Boot Web 應用程式中覆寫 java.util.logging.LogManager:Getting java.lang.ClassNotFoundException on already loaded class (1 個答案) 12 小時前關閉。
我在 Springboot 應用程式中將 Tomcat 作為嵌入式服務器運行,因此不需要 JULI 中的所有附加功能,例如多個類加載器等,只會妨礙它。
我只想讓我的應用程式java.util.logging直接使用,而不需要 JULI 的額外復雜性。我想要一個平面配置,其中所有內容都直接流向java.util.logging以及我配置它的方式。
我怎樣才能拋棄JULI?
更新
我遇到的實際問題是我無法加載自定義Handler...獲取ClassNotFound. 我最初認為這是由 JULI 引起的,但實際上似乎與 Spring Boot 的系統類管理器不愿意從BOOT-INF.
uj5u.com熱心網友回復:
JULI 只是 Tomcat 使用的一個日志外觀,用于基于Apache Commons Logging的內部日志記錄(參見javadoc ) 。它不是一個日志框架,它本身不執行任何日志記錄。
默認情況下,它使用java.util.logging您配置它的方式簡單明了。
您可以在獨立 Tomcat 中找到的附加功能(每個類加載器配置、同一類的多個處理程式等)由ClassLoaderLogManager. 為了使用它,您需要設定:
-Djava.util.logging.logmanager=org.apache.juli.ClassLoaderLogManager
作為 JVM 引數(其他地方可能會被忽略)。
Tomcat 的啟動腳本添加了上述 Java 系統屬性,但您的 Spring Boot 應用程式幾乎可以肯定沒有。因此,您的應用程式使用java.util.logging簡單明了(除非您使用的是spring-boot-starter-logging在這種情況下java.util.logging重定向到 LogBack)。
TL;DR:默認情況下,Tomcat JULI 只是將訊息轉發到java.util.logging. 沒有并發癥。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/463673.html
