2012-07-30 52 views
1

我想提供一個客戶端庫,用於將休息請求包裝到服務器並記錄錯誤,以便客戶端可以在他的應用程序中使用它並查看日誌。 (也有一個問題,如果我只是記錄錯誤或重新拋出它。當我使用異步調用(多線程)這可能是相當棘手..)外部庫的日誌記錄策略(slf4j?)

我讀slf4j可能有所幫助,因爲客戶,誰正在使用該庫,可以選擇他喜歡的日誌框架。

Somethings困惑我這個slf4j東西。如果他得到我的庫並且我只提供了,那麼讓我們說slf4j-api,錯誤將被拋出,導致SLF4J綁定不包括在內。解決方案可能是他必須自己包含綁定,而問題是他是否願意閱讀README以獲取此重要信息。

如果我包含一個「標準」-slf4j綁定(例如簡單的綁定),應用程序不能「覆蓋」這個,因爲在類路徑中只允許有一個綁定。它不會是靈活的anymoe

所以我想只使用log4j,並忘記其他每個日誌框架。我可能認爲這個問題很複雜,也許有人可能會幫助我解決這個問題?

+0

你的客戶庫如何看起來像?它是包含一切(包括日誌框架)的單個JAR文件還是包含您的庫及其依賴項的歸檔文件? – 2012-07-30 18:46:31

+1

從版本1.6.0開始,如果在類路徑上找不到綁定,則SLF4J將默認爲無操作實現。因此,當在類路徑中沒有找到綁定時,slf4j-api本身沒有拋出異常。 – Ceki 2012-07-30 20:16:35

回答

5

您必須記住,您的庫不會設置包裝應用程序的類路徑。包裝應用程序將設置一個包含你的庫,slf4j API庫和實現庫的類路徑。

包裝應用程序將負責使用和設置所有日誌參數的slf4j實現。您只需要擔心使用slf4j API記錄庫事件。這是常見的做法,不要擔心包裝應用程序。

通過在您的庫中包裝log4j,您正在擊敗伐木立面的目的。這樣做不會允許用戶選擇slf4j實現。