[英]Using logback, but somehow log4j getting initialized
我們的控制台應用程序正在使用logback進行日志記錄。 類路徑中有一個logback.xml文件。
在大多數平台(Linux,Windows,jdk7或jdk8)上,日志均按預期方式工作(通過登錄)。
但是,在使用jdk 6的Mac上,運行應用程序時,有時會看到:
log4j:WARN No appenders could be found for logger (our.class.Here).
log4j:WARN Please initialize the log4j system properly.
出於某種原因,似乎選擇log4j進行日志記錄,而不是選擇logback。 在our.class.Here中,我們通過slf4j登錄:
private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(our.class.Here.class);
這是完整的類路徑:
/path/etc/logback.xml:/path/lib/pdfbox-1.8.4.jar:/path/lib/fontbox-1.8.4.jar:/path/lib/jempbox-1.8.4.jar:/path/lib/jcl-over-slf4j-1.7.7.jar:/path/lib/bcprov-jdk15-1.45.jar:/path/lib/bcmail-jdk15-1.45.jar:/path/lib/xmlgraphics-commons-1.5.jar:/path/lib/icepdf-core-5.0.4.jar:/path/lib/jai-codec-1.1.3.jar:/path/lib/jai-core-1.1.3.jar:/path/lib/jewelcli-0.6.jar:/path/lib/commons-lang3-3.1.jar:/path/lib/commons-io-2.2.jar:/path/lib/logback-classic-1.1.0.jar:/path/lib/logback-core-1.1.0.jar:/path/lib/itext-2.1.7.jar:/path/lib/hibernate-validator-4.2.0.Final.jar:/path/lib/slf4j-api-1.7.5.jar
我們如何進一步排除故障以了解為什么選擇log4j而不是logback進行日志記錄?
感謝您的建議。
我沒有在您的類路徑中看到log4j-over-slf4j
...也許正是您所缺少的,以確保任何與log4j相關的代碼都通過正確的slf4j日志顯示(logback)嗎?
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.10</version>
</dependency>
問題在於log4j.jar位於用戶的Java的Extensions目錄中: /Library/Java/Extensions
我們通過使用帶有-verbose
java來發現了這一點,它指出了從中加載log4j.jar的位置。
解決方法是在運行我們的應用程序時禁用擴展文件夾: export JAVA_OPTS=-Djava.ext.dirs=""
由於該機器不是我們的機器,因此無法應用(更好的)永久解決擴展目錄的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.