服務(wù)器中的日志框架是什么

這篇文章主要介紹了服務(wù)器中的日志框架是什么的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇服務(wù)器中的日志框架是什么文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

十余年的和平網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整和平建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“和平網(wǎng)站設(shè)計(jì)”,“和平網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

故事開(kāi)始

在一家IT企業(yè)中,項(xiàng)目經(jīng)理虎大力(龍?zhí)祝?正在指揮 程序員鹿小明(精英龍?zhí)祝╅_(kāi)發(fā)一個(gè)大型的增刪改查項(xiàng)目。為了開(kāi)發(fā)這個(gè)項(xiàng)目。項(xiàng)目組僅有的程序員鹿小明每天工作996

故事進(jìn)入 V1.0 環(huán)節(jié)

one day,虎大力給鹿小明提出來(lái)一個(gè)新的需求,為了更好的進(jìn)行公司的信息化建設(shè),虎大力想要看到代碼執(zhí)行的情況,執(zhí)行到某個(gè)業(yè)務(wù)的時(shí)候在控制臺(tái)有所表示,例如:執(zhí)行到查詢方法的時(shí)候,需要在控制臺(tái)上出現(xiàn),這是一個(gè)打印方法的信息。

服務(wù)器中的日志框架是什么

鹿小明一想,這好辦啊,本來(lái)自己為了調(diào)試測(cè)試方便就寫過(guò)很多打印語(yǔ)句,現(xiàn)在無(wú)非更多而已。于是就加班加點(diǎn)在所有的增刪改查方法中都寫了System.out.println()打印語(yǔ)句。順利完成了這個(gè)工作。

服務(wù)器中的日志框架是什么

故事進(jìn)入 V2.0 環(huán)節(jié)

一段時(shí)間歲月靜好

one day,虎大力找到鹿小明:你這個(gè)代碼里面System.out.println()太多了,我需要你做成,測(cè)試時(shí)候顯示,上線之后不顯示。你去搞一下。

鹿小明于是冥思苦想:我要不要上線的時(shí)候把打印語(yǔ)句注釋掉,測(cè)試的時(shí)候再打開(kāi)呢?

但是想到要經(jīng)常開(kāi)關(guān)注釋也不是個(gè)容易的事兒,于是鹿小明一咬牙,996變007,廢寢忘食的更新出了 V2.0版本。他把日志打印封裝成框架 logging-1.0.jar,可以進(jìn)行統(tǒng)一的開(kāi)關(guān)。順利完成了這個(gè)工作。

服務(wù)器中的日志框架是什么

故事進(jìn)入 V3.0 環(huán)節(jié)

一段時(shí)間歲月靜好

one day,虎大力找到鹿小明:你這個(gè)日志框架功能太簡(jiǎn)單了 ,再搞點(diǎn)新功能,像輸出到文件啊,異步啊都搞上。

鹿小明于是冥思苦想,007之后繼續(xù)007,廢寢忘食的更新出了 V3.0 版本,封裝成一個(gè)新的框架logging-2.0.jar。順利完成了這個(gè)工作。

服務(wù)器中的日志框架是什么

故事進(jìn)入 V4.0 環(huán)節(jié)

一段時(shí)間歲月靜好

one day,虎大力找到鹿小明:1.0和2.0的api不一樣,1.0換成2.0,2.0換成1.0 每次切換都要改代碼,你改一下吧,改成可以想用哪個(gè)用哪個(gè)的。

鹿小明于是冥思苦想,007之后繼續(xù)007,這個(gè)需求有點(diǎn)難,他從JDBC上找到了靈感,JDBC通過(guò)統(tǒng)一接口實(shí)現(xiàn)了驅(qū)動(dòng)的切換,日志也可以。 服務(wù)器中的日志框架是什么

于是,他爆肝搞出來(lái)一個(gè)日志接口層(日志門面),讓 1.0 和 2.0的日志框架都實(shí)現(xiàn)這個(gè)接口,這樣想用1.0的時(shí)候就導(dǎo)入1.0,想用2.0的時(shí)候就導(dǎo)入2.0 。順利完成了這個(gè)任務(wù)。

服務(wù)器中的日志框架是什么

服務(wù)器中的日志框架是什么

而這個(gè)設(shè)計(jì)的結(jié)構(gòu)也是現(xiàn)在主流日志框架:log4j logback log4j2 等的結(jié)構(gòu)

日志門面(接口)日志實(shí)現(xiàn)
SLF4J,commons-loggingLogback,Log4j

通過(guò)它們就打印出了我們常見(jiàn)的各種日志信息

服務(wù)器中的日志框架是什么

日志框架結(jié)構(gòu)分析

日志框架實(shí)際上分為三個(gè)部分,除了上面提到的日志門面(接口)和日志庫(kù)(實(shí)現(xiàn)),還有日志適配器

服務(wù)器中的日志框架是什么

日志門面 接口規(guī)范

定義接口規(guī)范,不負(fù)責(zé)具體實(shí)現(xiàn),也就是說(shuō)以后代碼中打印日志時(shí)調(diào)用的日志門面接口的方法。常見(jiàn)的有 SLF4J,commons-logging 都是這樣。常見(jiàn)的日志門面有下面幾種

日志門面(接口規(guī)范層)簡(jiǎn)介
JCL(Jakarta Commons Logging)這個(gè)jar就是常見(jiàn)的 commons-logging.jar,也是Spring框架中使用的日志門面。由于上一次更新還是在2014年,所以不建議使用
SLF4j(Simple Logging Facade for Java)這個(gè)jar可以說(shuō)是最常用的日志jar包了
jboss-logging使用最少,一些特定的框架在使用

根據(jù)簡(jiǎn)單的分析,在我們的代碼中如果要選擇一款 日志的接口規(guī)范的話,毫無(wú)疑問(wèn),只有 SLF4j 配得上我們的項(xiàng)目。

日志庫(kù) 代碼實(shí)現(xiàn)

日志庫(kù)是日志功能的具體實(shí)現(xiàn),早期就是為了替代 System.out 語(yǔ)句而出現(xiàn)的。常用的日志庫(kù)如下:

日志庫(kù)(日志實(shí)現(xiàn))簡(jiǎn)介
log4j最早誕生,用的也最多
logback最晚出現(xiàn),和log4j同一作者,是log4j的升級(jí)版
log-jdkjdk 在1.4版本出現(xiàn)的java.util.logging 簡(jiǎn)稱 log-jdk

在實(shí)際的開(kāi)發(fā)中,log4j和logback的使用都非常的廣泛,但是如果你現(xiàn)在要開(kāi)發(fā)的是一個(gè)新項(xiàng)目,那么推薦使用 logback

日志門面適配器 又名 接口實(shí)現(xiàn)轉(zhuǎn)換器

這個(gè)東西是啥呢?要從歷史說(shuō)起,在日志框架的歷史中,并不是先有 日志門面(接口規(guī)范),后有日志庫(kù)。實(shí)際的情況是 作者 先寫出來(lái) log4j 用了一段時(shí)間之后才有了 slf4j 。

Tips:

  1. slf4j log4j logback 是同一個(gè)爹(作者)

  2. log4j 可以等價(jià)于 鹿小明寫的 1.0 那時(shí)候還沒(méi)有接口規(guī)范

因?yàn)檫@個(gè)先后順序的問(wèn)題,就出現(xiàn)了一個(gè)很尷尬的情況,代碼實(shí)現(xiàn)和接口不兼容,因?yàn)閘og4j的代碼中沒(méi)有實(shí)現(xiàn)slf4j的接口,所以要使用 slf4j+log4j的話,需要有個(gè)中間層(日志門面適配器)來(lái)解決接口的兼容問(wèn)題。

舉個(gè)例子:你買的超極本上沒(méi)有網(wǎng)線插口怎么辦呢?買個(gè)USB的轉(zhuǎn)換器,這個(gè)裝換器就是我們說(shuō)的中間層,也就是 日志門面適配器。 slf4j+“轉(zhuǎn)換器”+log4j 才能正常工作。

服務(wù)器中的日志框架是什么

通過(guò)這樣的設(shè)計(jì)模式,slf4j不僅兼容了log4j,還兼容了很多其他的日志框架。通過(guò)閱讀slf4j官方文檔 可以看到這樣一張圖

服務(wù)器中的日志框架是什么

在圖中標(biāo)記了 1 2 3 4,對(duì)照前面的概念解釋一下

標(biāo)記1:這是只有接口規(guī)范,沒(méi)有日志實(shí)現(xiàn)的情況,項(xiàng)目中只有接口沒(méi)有實(shí)現(xiàn)也就不會(huì)有任何日志信息輸出。

標(biāo)記2:應(yīng)用代碼中使用logback作為日志庫(kù)實(shí)現(xiàn),通過(guò)圖示可以看到logback是直接實(shí)現(xiàn)SLF4J接口的,不需要“轉(zhuǎn)換器”。接口層+代碼實(shí)現(xiàn)。這也是logback和log4j的區(qū)別之一。

標(biāo)記3:應(yīng)用代碼中使用log4j作為日志庫(kù)實(shí)現(xiàn),這個(gè)圖示在slf4j-api.jar之后,還有一個(gè)slf4j-log4j12.jar,他就是我們提到過(guò)的“轉(zhuǎn)換器”日志門面適配器。接口層+轉(zhuǎn)換器+代碼實(shí)現(xiàn) 的關(guān)系。

標(biāo)記4:這個(gè)圖示中也有轉(zhuǎn)接頭jar包,只不過(guò)這個(gè)jar包是為了兼容log-jdk。

那么問(wèn)題來(lái)了,logback和log4j在使用上有什么區(qū)別?

日志庫(kù)適配器 又名slf4j如何一統(tǒng)日志江湖?

日志門面適配器“接口實(shí)現(xiàn)轉(zhuǎn)接器”解決了接口規(guī)范和實(shí)現(xiàn)之間不兼容的問(wèn)題。我們終于可以愉快的開(kāi)始枯燥的日志打印了。

但是慢著,難道沒(méi)有覺(jué)得哪里不對(duì)嗎?你品,你細(xì)品

雖然我們的項(xiàng)目采用slf4j在快樂(lè)的打印日志,但是其他的框架用的可不是slf4j,譬如Spring(commons-logging)、Hibernate(jboss-logging),這種情況下 我們的項(xiàng)目的就像一個(gè)國(guó)家有了很多套法律,到底聽(tīng)誰(shuí)的, 所以我們需要讓別的框架和log4j一起統(tǒng)一使用slf4j進(jìn)行輸出日志?

咋能做到呢?這就要用到日志庫(kù)適配器了。它也是一個(gè)轉(zhuǎn)接頭,舉個(gè)栗子

slf4j 相當(dāng)于只有type-c接口的蘋果電腦?,F(xiàn)在你有很多U盤想接到電腦上,但是U盤用的是USB接口,要怎么辦呢?

買一個(gè) type-c 轉(zhuǎn) USB的轉(zhuǎn)換器即可

服務(wù)器中的日志框架是什么

通過(guò)官方文檔找到下面這張圖—說(shuō)明了 其他日志框架如何接入到slf4j上

服務(wù)器中的日志框架是什么

這張圖上有三個(gè)圖示,由于三個(gè)的原理的都一樣,我們以左上角的為例做簡(jiǎn)單的講解:

服務(wù)器中的日志框架是什么

這張圖我們先豎著看,就是應(yīng)用程序使用的logback做日志框架,接口規(guī)范+實(shí)現(xiàn)的簡(jiǎn)單關(guān)系。

接著我們橫著看,會(huì)看到 commons-logging log4j(之前說(shuō)過(guò)log4j生的早)log-jdk,這些就是應(yīng)用中其他框架Spring等使用的日志框架,想讓這些框架統(tǒng)一接入到slf4j, 怎么辦呢?

以commons-logging為例,如果你的項(xiàng)目中用了Spring,Spring就需要使用到commons-logging.jar ,怎么讓 Spring 的日志最終通過(guò) slf4j 輸出呢?

1.我們需要先排除 commons-logging.jar ,畢竟它壓根兒就沒(méi)有輸出到slf4j的功能,但是排除之后spring會(huì)報(bào)錯(cuò)啊,不要慌 這就到了第二步。

2.用 jck-over-slf4j.jar 替換 commons-logging.jar, 這個(gè)包有什么作用呢?偷天換日,鳩占鵲巢,它就是我們要找的轉(zhuǎn)換器,一方面它的功能和commons-logging一樣,完全可以替代;另一方面,可以無(wú)縫接入到slf4j。

這個(gè)中間轉(zhuǎn)換器包就是就是日志庫(kù)適配器。

簡(jiǎn)單吧,通過(guò)上述兩步就可以實(shí)現(xiàn) commons-logging 統(tǒng)一到slf4j 。

通過(guò)這樣的邏輯,可以很簡(jiǎn)單的把log4j,log-jdk 也都能通過(guò)中間的轉(zhuǎn)換包統(tǒng)一到slf4j,也就實(shí)現(xiàn)了slf4j一統(tǒng)日志江湖。

關(guān)于“服務(wù)器中的日志框架是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“服務(wù)器中的日志框架是什么”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁(yè)名稱:服務(wù)器中的日志框架是什么
當(dāng)前路徑:http://bm7419.com/article34/jjdjpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、定制開(kāi)發(fā)云服務(wù)器、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司