簡體   English   中英

混合Java日志與slf4j,log4j和java.util.logging

[英]mixed java logging with slf4j, log4j and java.util.logging

我正在Weblogic服務器中運行一個Web應用程序(我不太熟悉)。
通過JVM args,將日志級別為DEBUG的log4j配置傳遞給應用程序。 在日志文件中,我還可以找到一些DEBUG級別的日志條目。

到現在為止還挺好。
在調試期間,我發現一些對logger.debug()的調用不在日志文件中。

私有靜態最終org.slf4j.Logger logger = LoggerFactory.getLogger(ActionCtr.class);

該方法調用肯定已命中,但未將任何內容寫入文件。

如果在調試過程中進行了調試,則會在記錄器中看到:org.slf4j.impl.JDK14LoggerAdapter(com.example.application.ActionCtr)“ java.util.logging.FileHandler.pattern”->“%h / java%u .log”

這給我帶來了一些問題(因為我無法更改正在運行的應用程序):
1)怎么可能會使用該應用程序,卻使用了log4j和java.util.logging的混合體
2)我如何確定在哪些類中使用了什么?
3)沒有%h / java%u.log(〜/ java * .log),所以我嘗試提供一個java.util.logging符合屬性文件,但這沒有改變-我如何確定在哪里運行logger從其配置中獲取對其進行配置嗎?

1)怎么可能會使用混合了log4j和java.util.logging的應用程序

這些日志記錄框架中的任何一個都可以由應用程序直接使用,也可以由應用程序使用的依賴庫使用。 不需要太多的依賴關系就可以構成一堆日志記錄框架搭便車者。

SLF4J手冊解釋了該日志記錄框架如何使所有其他框架陷入困境。 這就是為什么您看到org.slf4j.impl.JDK14LoggerAdapter

我如何確定在什么班級使用了什么?

假設你的意思是直接的用途可以使用Jdepsjavap的

我如何確定正在運行的記錄器從何處獲取其配置以進行正確配置?

JConsole工具可以在運行時訪問JUL記錄器。 它還將向您顯示所有系統屬性,其中可能包括logging.properties文件的路徑。

如果應用程序以非標准的方式實用地配置日志記錄,那么一種選擇是使用帶有access選項的java.security.debug 在安全管理器下運行該應用程序將獲得全部或所有必需的權限,但隨后啟用訪問跟蹤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM