簡體   English   中英

使用logback,但是不知如何初始化log4j

[英]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.

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