有沒有辦法強制slf4j使用特定的日誌記錄提供程序(在我的情況是logback)?在他們的文檔:強制slf4j使用logback
多個綁定中的類路徑中找到
SLF4J API飛漫到一個和在同一時間只有一個底層的日誌框架約束。如果類路徑中存在多個綁定,則SLF4J將發出警告,列出這些綁定的位置。 當類路徑中有多個綁定可用時,請選擇您希望使用的一個且僅一個綁定,並刪除其他綁定。例如,如果在類路徑中同時包含slf4j-> simple-1.6.6.jar和slf4j-nop-1.6.6.jar,並且您希望使用nop(> no-operation)綁定,則請刪除slf4j-類路徑中的simple-1.6.6.jar。如果無法刪除超級綁定,SLF4J仍然會綁定一個日誌框架/實現。從版本1.6.6開始,SLF4J將命名它實際綁定的框架/實現類。
注意SLF4J發出的警告就是這樣一個警告。
在我的情況,我有log4j.jar
,slf4j-log4j12.jar
,log4j-over-slf4j.jar
在classpath中所有的logback罐子。我知道將slf4j-log4j12.jar
和log4j-over-slf4j.jar
放在一起是錯誤的,但我的項目非常大,並且找到並排除Maven依賴關係並不總是很簡單。在這種情況下,slf4j甚至沒有打印任何警告,因爲我們只使用logback配置。我花了一天的時間才明白這個地獄。
我想要的只是通過JVM參數強制slf4j使用logback,因此它可以打印警告,我可以在將來排除jar。
這對我來說很可惜 – madhead 2012-07-11 17:36:49