




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、文檔可自由編輯打印SLF4J 中文手冊(cè)中文手冊(cè)SLF4J,即簡單日志門面(Simple Logging Facade for Java) ,不是具體的日志解決方案,它只服務(wù)于各種各樣的日志系統(tǒng)。按照官方的說法,SLF4J 是一個(gè)用于日志系統(tǒng)的簡單Facade,允許最終用戶在部署其應(yīng)用時(shí)使用其所希望的日志系統(tǒng)。實(shí)際上,SLF4J 所提供的核心 API 是一些接口以及一個(gè) LoggerFactory 的工廠類。從某種程度上,SLF4J 有點(diǎn)類似 JDBC,不過比 JDBC 更簡單,在 JDBC 中,你需要指定驅(qū)動(dòng)程序,而在使用 SLF4J 的時(shí)候,不需要在代碼中或配置文件中指定你打算使用那個(gè)具體的
2、日志系統(tǒng)。如同使用 JDBC 基本不用考慮具體數(shù)據(jù)庫一樣,SLF4J 提供了統(tǒng)一的記錄日志的接口,只要按照其提供的方法記錄即可,最終日志的格式、記錄級(jí)別、輸出方式等通過具體日志系統(tǒng)的配置來實(shí)現(xiàn),因此可以在應(yīng)用中靈活切換日志系統(tǒng)。典型的使用模式典型的使用模式下面同樣的代碼展示了 SLF4J 的典型使用模式。注意第 15 行 -占位符 的使用。更多詳細(xì)內(nèi)容請(qǐng)查看 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: 文檔可自由編輯打印在部署階段綁定某個(gè)日志框架在部署階段綁定某個(gè)日志框架前面提到過,SLF4J 支持多種日志框架。SLF4J 發(fā)行包中自帶幾個(gè)用于“SLF4J 綁定”的jar 文件, 每種綁定對(duì)應(yīng)一種支持的日志框架。slf4j-log4j12-1.7.2.jar用于綁定 1.2版的 log4j , 這是一個(gè)廣泛使用的日志系統(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 的實(shí)現(xiàn), 所有的打印會(huì)響應(yīng)到 System.err. 只有INFO 或者更高的級(jí)別會(huì)被打印. 這個(gè)綁定在小型應(yīng)用中非常有用。slf4j-jcl-1.7.2.jar用于綁定 Jakarta Commons Logging. 這個(gè)綁定會(huì)使得 SLF4J 的日志功能委托 JCL 來完成.還有除了 SLF4J 項(xiàng)目以外提供的綁定包,例如 logback 本身就實(shí)現(xiàn)了 SLF4J。Logb
6、ack 的 ch.qos.logback.classic.Logger 類實(shí)直接實(shí)現(xiàn)了 SLF4J 的 org.slf4j.Logger 接口。因此,結(jié)合logback 使用 SLF4J 節(jié)省很多內(nèi)存和計(jì)算的開銷。要切換日志系統(tǒng),只需在 classpath 上替換 slf4j 的綁定則可。例如,你要從 java.util.logging切換到 log4j,只需要把 slf4j-jdk14-1.7.2.jar 替換為 slf4j-log4j12-1.7.2.jarSLF4J 不依賴于任何的特殊類加載器。實(shí)際上,每個(gè) SLF4J 綁定都是在編譯階段使用且指定唯一一種日志框架。例如,slf4j-lo
7、g4j12-1.7.2.jar 綁定在編譯階段綁定使用 log4j。在你的文檔可自由編輯打印代碼中,除了 slf4j-api-1.7.2.jar 意外,你只能在 classpath 中加入一種綁定。不要添加超過1 個(gè)綁定。下面是這張圖解釋了總體的思路。(underlying 表示直接實(shí)現(xiàn) SLF4J 的接口,adaptation 表示通過適配器實(shí)現(xiàn) SLF4J 的接口)SLF4J 的接口和它的各種適配器是非常簡單的。大多數(shù)熟悉 java 語言的開發(fā)人員能夠在一個(gè)小時(shí)內(nèi)閱讀和完全理解這些代碼。因?yàn)?SLF4J 沒有使用或者說沒有直接訪問類加載器,所以關(guān)于類加載器的知識(shí)不是必須的。因此,SLF4J
8、 沒有類加載器和內(nèi)存泄露的問題,在方面,common logging 就相形見拙了。有了簡單明了的 SLF4J 接口和部署模型,對(duì)于一個(gè)新的日志系統(tǒng),開發(fā)人員可以容易的開發(fā) SLF4J 的綁定。庫庫廣泛使用的一些組件會(huì)在他們的代碼中使用 SLF4J 接口,這是以避免強(qiáng)制用戶使用某一種日志框架。因此,最終用戶可以再部署階段選擇自己喜歡的日志框架并在 classpath 中加入對(duì)應(yīng)框架的 slf4j 綁定包。以后,還可以通過替換一個(gè)新的 slf4j 綁定來使用另一種日志框架。這種方案被證明是簡單且健壯的。在 1.6.0 版本中,如果在 classpath 中沒有找到綁定,slf4j-api 將會(huì)默
9、認(rèn)忽略所有打印請(qǐng)求。以前,則會(huì)因?yàn)槿鄙?org.slf4j.impl.StaticLoggerBinder 類而拋出一個(gè) NoClassDeFoundError的錯(cuò)誤,從 SLF4J 1.6.0 器,則會(huì)發(fā)出一個(gè)唯一一次警告信息,說明缺少綁定并且往后的所有答應(yīng)請(qǐng)求會(huì)被忽略。舉個(gè)實(shí)例,Wombat 框架依賴于 SLF4J 日志功能。為了避免強(qiáng)制最終用戶使用某種日志框架,Wombat 的發(fā)布包中包含了 slf4j-api.jar 且不包含任何綁定包。即便用戶在 classpath 上缺少任何 SLF4J 綁定包,Wombat 依然能工作。只有在用戶決定開啟使用日志功能的時(shí)候,他才需要安裝綁定某種日
10、志框架的 SLF4J 綁定包。文檔可自由編輯打印項(xiàng)目中的日志功能依賴項(xiàng)目中的日志功能依賴請(qǐng)注意,任何可嵌入使用的組件例如庫或者框架,都不應(yīng)該聲明某個(gè) SLF4J 綁定的具體依賴,只能聲明依賴于 slf4j-api. 有關(guān) SLF4j 在可嵌入組件中使用的在 FAQ 里有相關(guān)討論 logging configuration, dependency reduction and testing.基于 maven 的傳遞依賴規(guī)則,對(duì)于“一般”項(xiàng)目(非庫或者框架)來說,聲明日志功能的依賴可以通過一條依賴聲明完成。LOGBACK-CLASSIC 如果你希望使用 logback-classic 作為日志框架
11、。你只需在pom.xml 文件中聲明ch.qos.logback:logback-classic依賴(如下所示) 。此外,logback-classic-1.0.7.jar 依賴會(huì)自動(dòng)把 slf4j-api-1.7.2.jar 加載到你的項(xiàng)目。不過明確的聲明 slf4j-api-1.7.2.jar 的依賴并沒有錯(cuò),也避免 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, 依賴會(huì)自動(dòng)把 slf4j-api-1.7.2.jar 加載到你的項(xiàng)目。不過明確的聲明 slf4j-api-1.7.2.jar 的依賴并沒有錯(cuò),也避免 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, 依賴會(huì)自動(dòng)把 slf4j-api-1.7.2.
13、jar 加載到你的項(xiàng)目。不過明確的聲明 slf4j-api-1.7.2.jar 的依賴并沒有錯(cuò),也避免 MAVEN 默認(rèn)的相關(guān)版本信息不如你所意。 org.slf4j文檔可自由編輯打印 slf4j-jdk14 1.7.2二進(jìn)制兼容性二進(jìn)制兼容性混用不同版本的 slf4j-api.jar 和 slf4j 綁定會(huì)導(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 將不會(huì)有任何問題。你只需要保證你的 slf4j 綁定包的版本要匹配 slf4j-api 包的版本即可。在初始化階段,如果 SLF4J 檢測(cè)到 slf4j-api 和 slf4j 綁定包的版本沖突,將會(huì)發(fā)出一個(gè)警告。通過通過 SLF4J 統(tǒng)一日志統(tǒng)一日志很多時(shí)候,一個(gè)項(xiàng)目以來不同的組件,這些組件中依賴的日志 api 不是 SLF4J 的。一個(gè)項(xiàng)目依賴 JCL(common logging),java.util.logging, log4j 和 SLF4J 的組合是很普遍的。因此,通過一個(gè)方式來統(tǒng)一日志則顯得很有吸引力。SLF4J 通過提供 JCL,java.uti
15、l.logging 和log4j 的橋接來滿足這種普遍使用。更詳細(xì)的內(nèi)容參考 Bridging legacy APIs.頁面。線程映射表(線程映射表(Mapped Diagnostic Context)MDC 本質(zhì)上是日志框架維護(hù)的一個(gè) map,在應(yīng)用中提供鍵值對(duì),這些值可以添加到日志消息中。SLF4J 支持 MDC。如果具體的日志框架提供了 MDC 功能,那么 SLF4J 就會(huì)委托下面的日志框架實(shí)現(xiàn) MDC 功能。注意,現(xiàn)在只有 log4j 和 logback 提供 MDC 功能。如果具體的日志框架不提供,如 java.util.logging,則 slf4j 將會(huì)存儲(chǔ) MDC 的數(shù)據(jù),但是
16、里面的信息需要用戶通過代碼來獲得。因此,作為一個(gè) SLF4J 的用戶,你可以利用已有 MDC 功能的 log4j 和 logback,但是不能強(qiáng)制用戶依賴具體的日志框架。更多關(guān)于 MDC 的信息,請(qǐng)查看 logback 指南中的 MDC 章節(jié)文檔可自由編輯打印行動(dòng)綱要行動(dòng)綱要AdvantageDescription在部署階段選擇具體的日志框架通過在 classpath 加入日志框架對(duì)應(yīng)的的slf4j 綁定包錯(cuò)誤快速響應(yīng)基于 JVM 加載累的方式,會(huì)很快的執(zhí)行日志框架綁定驗(yàn)證。如果 SLF4J 不能再classpath 找到一個(gè)綁定,則會(huì)發(fā)出一條警告信息,接著后面的所有日志請(qǐng)求就沒有具體的操作。綁定流行的日志框架SLF4J 支持流行的日志框架, 包括 log4j, java.util.logging, Simple logging and NOP. logback 本身實(shí)現(xiàn)了 SLF4j橋接遺留的日志 API通過 SLF4J 實(shí)現(xiàn) JCL , 如 jcl-over-slf4j.j
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java概念類面試題及答案
- java自動(dòng)化面試題及答案
- QSC考試題及答案
- 解答結(jié)構(gòu)化面試題及答案
- EISNTFJP性格測(cè)試題及答案
- c二級(jí)考試試題及答案
- cad機(jī)械技能考試試題及答案
- c1筆試題目及答案
- asp自考試題及答案
- ai面試題庫及答案銷售
- 2025年蘇州市中考英語二模模擬試題(六)(含解析)
- 2025年耐熱玻璃器皿行業(yè)深度研究報(bào)告
- 護(hù)理影像學(xué)試題及答案總結(jié)
- DB65-T 4623-2022 分散式風(fēng)電接入電力系統(tǒng)管理規(guī)范
- 水電使用合同協(xié)議書
- 退休終止勞動(dòng)合同協(xié)議書
- 中國獸藥典三部 2020年版
- NB/T 11646-2024井工煤礦采空區(qū)自然發(fā)火監(jiān)測(cè)預(yù)警技術(shù)規(guī)范
- 實(shí)驗(yàn)室質(zhì)量管理體系與試題
- 嬰幼兒期的食物過敏識(shí)別與管理考核試題及答案
- 基于S7-200 PLC及MCGS組態(tài)的蘋果分揀機(jī)系統(tǒng)控制設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論