2014-05-20 28 views
0

我有一個.jar文件(例如foo.jar),我們不能改變它,它包含一個commons-logging.properties文件(重定向到JDK14Logging)並依賴於外部的commons-logging.jar文件日誌記錄。這,我相信被設置爲輸出到stdout,這是不是很有幫助。通過外部屬性文件重定向Commons日誌記錄,無需編輯jar或SLF4J?

我們有一個不同的日誌記錄系統(如果它很重要),我們正在使用,並傾向於使用。是否可以有一個外部屬性文件(位於foo.jar的本地文件)'覆蓋' foo.jar中的一個

我知道,SLF4J 應該工作,應在編輯的7zip的.jar和「重新編譯」可以這麼說,但我覺得,首先創建一個廣口瓶中的額外的依賴(如需要將一個成環境),後者創建了一個依賴關係,當我/如果我已經離開項目時提供了/ foo.jar,我們對foo.jar進行了相同的編輯。

這是可能的沒有編輯jar或SLF4J??或者我需要咬上述之一的子彈?

回答

1

快速修復(假設正在使用默認類加載器)將創建您自己的commons-logging.properties文件,該文件包含在包含不需要的commons-logging.properties文件的jar之前的類路徑中的目錄中。您的commons-logging.properties文件應配置爲使用Log4J,特別是您的log4j.properties文件。

但是,我真的建議切換到SLF4J,並使用commons-logging的SLF4J bridge implementation,這會使得您所依賴的庫所使用的commons-logging API無關緊要,並允許您控制日誌配置您的項目(通過假設您使用Logback的單個logback.xml文件)。

+0

這不是那麼相關。我不是在問如何使用SLF4J - 我知道那是如何工作的。目前還不清楚你是否說這是* only *選項。就目前而言,它看起來好像你在給我一個意見,而不是一個答案。 – Pureferret

+0

我從你原來的問題中瞭解到你正在使用SLF4J,但是,鑑於情況並非如此,我會更新我的答案 –

+0

現在這是一個很好的答案。乾杯。 – Pureferret