SLF4J中文手冊_第1頁
SLF4J中文手冊_第2頁
SLF4J中文手冊_第3頁
SLF4J中文手冊_第4頁
SLF4J中文手冊_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、文檔可自由編輯打印SLF4J 中文手冊中文手冊SLF4J,即簡單日志門面(Simple Logging Facade for Java) ,不是具體的日志解決方案,它只服務(wù)于各種各樣的日志系統(tǒng)。按照官方的說法,SLF4J 是一個用于日志系統(tǒng)的簡單Facade,允許最終用戶在部署其應(yīng)用時使用其所希望的日志系統(tǒng)。實際上,SLF4J 所提供的核心 API 是一些接口以及一個 LoggerFactory 的工廠類。從某種程度上,SLF4J 有點類似 JDBC,不過比 JDBC 更簡單,在 JDBC 中,你需要指定驅(qū)動程序,而在使用 SLF4J 的時候,不需要在代碼中或配置文件中指定你打算使用那個具體的

2、日志系統(tǒng)。如同使用 JDBC 基本不用考慮具體數(shù)據(jù)庫一樣,SLF4J 提供了統(tǒng)一的記錄日志的接口,只要按照其提供的方法記錄即可,最終日志的格式、記錄級別、輸出方式等通過具體日志系統(tǒng)的配置來實現(xiàn),因此可以在應(yīng)用中靈活切換日志系統(tǒng)。典型的使用模式典型的使用模式下面同樣的代碼展示了 SLF4J 的典型使用模式。注意第 15 行 -占位符 的使用。更多詳細(xì)內(nèi)容請查看 FAQ 中的問題 What is the fastest way of logging?1: import org.slf4j.Logger; 2: import org.slf4j.LoggerFactory; 3: 4: public

3、 class Wombat 5: 6: final Logger logger = LoggerFactory.getLogger(Wombat.class); 7: Integer t; 8: Integer oldT; 9:10: public void setTemperature(Integer temperature) 11: 12: oldT = t; 13: t = temperature;14:15: logger.debug(Temperature set to . Old temperature was ., t, oldT);16:17: if(temperature.i

4、ntValue() 50) 18: (Temperature has risen above 50 degrees.);19: 20: 21: 文檔可自由編輯打印在部署階段綁定某個日志框架在部署階段綁定某個日志框架前面提到過,SLF4J 支持多種日志框架。SLF4J 發(fā)行包中自帶幾個用于“SLF4J 綁定”的jar 文件, 每種綁定對應(yīng)一種支持的日志框架。slf4j-log4j12-1.7.2.jar用于綁定 1.2版的 log4j , 這是一個廣泛使用的日志系統(tǒng),當(dāng)然你還要把 log4j 包加到 classpath 中slf4j-jdk14-1.7.2.jar用于綁定

5、java.util.logging, 作為 JDK 1.4 的 loggingslf4j-nop-1.7.2.jar用于綁定 NOP, 不做任何操作.slf4j-simple-1.7.2.jar用于綁定 simple 的實現(xiàn), 所有的打印會響應(yīng)到 System.err. 只有INFO 或者更高的級別會被打印. 這個綁定在小型應(yīng)用中非常有用。slf4j-jcl-1.7.2.jar用于綁定 Jakarta Commons Logging. 這個綁定會使得 SLF4J 的日志功能委托 JCL 來完成.還有除了 SLF4J 項目以外提供的綁定包,例如 logback 本身就實現(xiàn)了 SLF4J。Logb

6、ack 的 ch.qos.logback.classic.Logger 類實直接實現(xiàn)了 SLF4J 的 org.slf4j.Logger 接口。因此,結(jié)合logback 使用 SLF4J 節(jié)省很多內(nèi)存和計算的開銷。要切換日志系統(tǒng),只需在 classpath 上替換 slf4j 的綁定則可。例如,你要從 java.util.logging切換到 log4j,只需要把 slf4j-jdk14-1.7.2.jar 替換為 slf4j-log4j12-1.7.2.jarSLF4J 不依賴于任何的特殊類加載器。實際上,每個 SLF4J 綁定都是在編譯階段使用且指定唯一一種日志框架。例如,slf4j-lo

7、g4j12-1.7.2.jar 綁定在編譯階段綁定使用 log4j。在你的文檔可自由編輯打印代碼中,除了 slf4j-api-1.7.2.jar 意外,你只能在 classpath 中加入一種綁定。不要添加超過1 個綁定。下面是這張圖解釋了總體的思路。(underlying 表示直接實現(xiàn) SLF4J 的接口,adaptation 表示通過適配器實現(xiàn) SLF4J 的接口)SLF4J 的接口和它的各種適配器是非常簡單的。大多數(shù)熟悉 java 語言的開發(fā)人員能夠在一個小時內(nèi)閱讀和完全理解這些代碼。因為 SLF4J 沒有使用或者說沒有直接訪問類加載器,所以關(guān)于類加載器的知識不是必須的。因此,SLF4J

8、 沒有類加載器和內(nèi)存泄露的問題,在方面,common logging 就相形見拙了。有了簡單明了的 SLF4J 接口和部署模型,對于一個新的日志系統(tǒng),開發(fā)人員可以容易的開發(fā) SLF4J 的綁定。庫庫廣泛使用的一些組件會在他們的代碼中使用 SLF4J 接口,這是以避免強(qiáng)制用戶使用某一種日志框架。因此,最終用戶可以再部署階段選擇自己喜歡的日志框架并在 classpath 中加入對應(yīng)框架的 slf4j 綁定包。以后,還可以通過替換一個新的 slf4j 綁定來使用另一種日志框架。這種方案被證明是簡單且健壯的。在 1.6.0 版本中,如果在 classpath 中沒有找到綁定,slf4j-api 將會默

9、認(rèn)忽略所有打印請求。以前,則會因為缺少 org.slf4j.impl.StaticLoggerBinder 類而拋出一個 NoClassDeFoundError的錯誤,從 SLF4J 1.6.0 器,則會發(fā)出一個唯一一次警告信息,說明缺少綁定并且往后的所有答應(yīng)請求會被忽略。舉個實例,Wombat 框架依賴于 SLF4J 日志功能。為了避免強(qiáng)制最終用戶使用某種日志框架,Wombat 的發(fā)布包中包含了 slf4j-api.jar 且不包含任何綁定包。即便用戶在 classpath 上缺少任何 SLF4J 綁定包,Wombat 依然能工作。只有在用戶決定開啟使用日志功能的時候,他才需要安裝綁定某種日

10、志框架的 SLF4J 綁定包。文檔可自由編輯打印項目中的日志功能依賴項目中的日志功能依賴請注意,任何可嵌入使用的組件例如庫或者框架,都不應(yīng)該聲明某個 SLF4J 綁定的具體依賴,只能聲明依賴于 slf4j-api. 有關(guān) SLF4j 在可嵌入組件中使用的在 FAQ 里有相關(guān)討論 logging configuration, dependency reduction and testing.基于 maven 的傳遞依賴規(guī)則,對于“一般”項目(非庫或者框架)來說,聲明日志功能的依賴可以通過一條依賴聲明完成。LOGBACK-CLASSIC 如果你希望使用 logback-classic 作為日志框架

11、。你只需在pom.xml 文件中聲明ch.qos.logback:logback-classic依賴(如下所示) 。此外,logback-classic-1.0.7.jar 依賴會自動把 slf4j-api-1.7.2.jar 加載到你的項目。不過明確的聲明 slf4j-api-1.7.2.jar 的依賴并沒有錯,也避免 MAVEN 默認(rèn)的相關(guān)版本信息不如你所意。 ch.qos.logback logback-classic 1.0.7LOG4J 如果你希望使用 log4j 作為日志框架。你只需在 pom.xml 文件中聲明org.slf4j:slf4j-log4j12依賴(如下所示) 。此外

12、,slf4j-log4j12-1.7.2.jar, 依賴會自動把 slf4j-api-1.7.2.jar 加載到你的項目。不過明確的聲明 slf4j-api-1.7.2.jar 的依賴并沒有錯,也避免 MAVEN 默認(rèn)的相關(guān)版本信息不如你所意。 org.slf4j slf4j-log4j12 1.7.2JAVA.UTIL.LOGGING 如果你希望使用 java.util.logging 作為日志框架。你只需在pom.xml 文件中聲明org.slf4j:slf4j-jdk14依賴(如下所示) 。此外,slf4j-jdk14-1.7.2.jar, 依賴會自動把 slf4j-api-1.7.2.

13、jar 加載到你的項目。不過明確的聲明 slf4j-api-1.7.2.jar 的依賴并沒有錯,也避免 MAVEN 默認(rèn)的相關(guān)版本信息不如你所意。 org.slf4j文檔可自由編輯打印 slf4j-jdk14 1.7.2二進(jìn)制兼容性二進(jìn)制兼容性混用不同版本的 slf4j-api.jar 和 slf4j 綁定會導(dǎo)致問題。例如,你使用 slf4j-api-1.7.2.jar,然后你必須使用 slf4j-simple-1.7.2.jar,假若你使用了 slf4j-simple-1.5.5.jar 將不能正常工作。不過,從用戶的角度來看,所有版本的 slf4j-api 包都是兼容的??蛻羰褂貌煌ò姹镜?/p>

14、slf4j-api-N.jar 將不會有任何問題。你只需要保證你的 slf4j 綁定包的版本要匹配 slf4j-api 包的版本即可。在初始化階段,如果 SLF4J 檢測到 slf4j-api 和 slf4j 綁定包的版本沖突,將會發(fā)出一個警告。通過通過 SLF4J 統(tǒng)一日志統(tǒng)一日志很多時候,一個項目以來不同的組件,這些組件中依賴的日志 api 不是 SLF4J 的。一個項目依賴 JCL(common logging),java.util.logging, log4j 和 SLF4J 的組合是很普遍的。因此,通過一個方式來統(tǒng)一日志則顯得很有吸引力。SLF4J 通過提供 JCL,java.uti

15、l.logging 和log4j 的橋接來滿足這種普遍使用。更詳細(xì)的內(nèi)容參考 Bridging legacy APIs.頁面。線程映射表(線程映射表(Mapped Diagnostic Context)MDC 本質(zhì)上是日志框架維護(hù)的一個 map,在應(yīng)用中提供鍵值對,這些值可以添加到日志消息中。SLF4J 支持 MDC。如果具體的日志框架提供了 MDC 功能,那么 SLF4J 就會委托下面的日志框架實現(xiàn) MDC 功能。注意,現(xiàn)在只有 log4j 和 logback 提供 MDC 功能。如果具體的日志框架不提供,如 java.util.logging,則 slf4j 將會存儲 MDC 的數(shù)據(jù),但是

16、里面的信息需要用戶通過代碼來獲得。因此,作為一個 SLF4J 的用戶,你可以利用已有 MDC 功能的 log4j 和 logback,但是不能強(qiáng)制用戶依賴具體的日志框架。更多關(guān)于 MDC 的信息,請查看 logback 指南中的 MDC 章節(jié)文檔可自由編輯打印行動綱要行動綱要AdvantageDescription在部署階段選擇具體的日志框架通過在 classpath 加入日志框架對應(yīng)的的slf4j 綁定包錯誤快速響應(yīng)基于 JVM 加載累的方式,會很快的執(zhí)行日志框架綁定驗證。如果 SLF4J 不能再classpath 找到一個綁定,則會發(fā)出一條警告信息,接著后面的所有日志請求就沒有具體的操作。綁定流行的日志框架SLF4J 支持流行的日志框架, 包括 log4j, java.util.logging, Simple logging and NOP. logback 本身實現(xiàn)了 SLF4j橋接遺留的日志 API通過 SLF4J 實現(xiàn) JCL , 如 jcl-over-slf4j.j

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論