2009-06-16 77 views
5

我有一些jar文件將分發給正在使用log4j進行日誌記錄的客戶端。我的問題是我應該在jar文件中包含一個log4j.xml配置,還是讓客戶端提供一個,如果他們想要記錄?客戶端jar中的log4j.xml

我的感覺是離開的log4j.xml配置文件出客戶罐子,因爲Apache的jar文件都帶有log4j的日誌記錄,但SANS的log4j.xml。

回答

9

是的,不要說了。當您的log4j配置文件被忽略時,這是非常麻煩的,因爲您的應用程序的60個第三方庫中的一個包含它自己的。

0

如果您在您的應用程序中使用log4j,那麼您將它包含在您的項目中。如果你不是,那麼你爲什麼要把它放在那裏?如果客戶A想要log4j版本1.2並且客戶B想要log4j版本1.3會怎麼樣。

讓他們決定他們的項目需要什麼,並擔心您需要什麼。

+0

您可能指的是實際的log4j.jar依賴性,但我正在討論配置文件log4j.xml。 – 2009-06-16 16:35:27

+0

啊,是的,抱歉,我錯過了。我有一個項目在這裏有一個依賴這個ABIS jar文件。這個ABIS jar文件具有它自己的log4j.xml配置文件。我的log4j參數有時會被導入的ABIS jar(日誌級別設置爲ERROR而不是我設置的DEBUG)覆蓋。我肯定會放棄它,讓客戶設置他們的。 – amischiefr 2009-06-16 16:53:39

5

在你的情況下,關於log4j的好處是你的jar真的不必擔心它。 log4j的基本用例是:

  1. 獲取Logger對象當前類
  2. 呼叫的對記錄器的方法之一,如debug("some message");

如果要運送的罐子被更大的應用程序使用,那麼理想情況下,您的代碼只會執行上面列出的兩個步驟。通過這種方式,您的代碼將簡單地從客戶端應用程序中已配置的log4j實例中獲取記錄器對象。然後,您的生產代碼將不必知道如何配置log4j。

任何你需要爲你的jar開發所看到的日誌記錄都可以通過在單元測試setUp()方法中配置一個log4j實例或類似的東西來完成,這些東西不會捆綁到客戶端的生產代碼中。

0

我會添加配置xml並加載指令,以顯示不同配置和選項的用戶。這將使它們或支持更容易啓用添加日誌記錄。

2

我會放一個默認的log4j配置,你期望在文檔中對你的客戶有用。通過這種方式,感興趣的人可以看到你有什麼日誌記錄選項(通常某些類從用戶的角度看有更有趣的日誌消息)。當我有一個使用log4j的第三方庫並且它沒有文檔時,我發現它很煩人,並且有日誌消息填滿了我的屏幕,我必須嘗試弄清楚如何啓用或禁止某些日誌消息。