2012-08-11 54 views
1

我正在編寫一個Java應用程序,它將使用SLF4J來處理使用JUL(Java Utils Logging)的運行時綁定進行日誌記錄。因此我的類路徑將有slf4j-api-1.6.4.jar以及slf4j-jdk14-1.6.4.jarSLF4J橋接所需的配置文件

JUL可以通過logging.properties配置,所以我也需要在我的類路徑中。

爲了確保所有的第三方的依賴登錄到同一JUL的配置,我就準備把下面所有的橋樑我的類路徑中:

  • jcl-over-slf4j-1.6.4.jar
  • log4j-over-slf4j-1.6.4.jar

JCL通過commons-logging.properties進行配置,Log4J通過log4j.properties進行配置。

我的問題:我是否需要在我的類路徑中放置commons-logging.propertieslog4j.properties,或者因爲SLF4J網橋,這是不必要的?

我90%確定我不需要,但需要在這裏進行理智檢查!我的理論是,這些橋接器將存根替換爲正常的JCL/Log4J類,只是盲目地調用SLF4J API調用。

這些SLF4J API調用反過來像我的代碼一樣,使用它們在運行時綁定的任何實現。由於在我的情況下綁定是JUL,只需要一個logging.properties文件。

但我不是伐木專家,我寧願安全也不抱歉。所以我需要這些額外的配置文件,如果是這樣,請解釋爲什麼我可以更好地瞭解SLF4J的工作原理!提前致謝!

回答

1

不,您不需要在類路徑中放置commons-logging.propertieslog4j.properties,由於SLF4J橋接器的原因,這不必要。你對新娘的理解是正確的。

如果你使用Maven,你可能會希望使用Banned Dependencies執法規則,以避免依賴關係的log4j,共享記錄或匍匐的logback。

+0

我看到第一次有人提到執法插件。對於非常大的項目和維護單個日誌記錄實施來說,這是必須的。 – alan7678 2016-01-28 17:34:15