中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

服務器中的日志框架是什么

發布時間:2022-01-12 09:08:46 來源:億速云 閱讀:136 作者:iii 欄目:云計算

這篇文章主要介紹了服務器中的日志框架是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇服務器中的日志框架是什么文章都會有所收獲,下面我們一起來看看吧。

故事開始

在一家IT企業中,項目經理虎大力(龍套) 正在指揮 程序員鹿小明(精英龍套)開發一個大型的增刪改查項目。為了開發這個項目。項目組僅有的程序員鹿小明每天工作996

故事進入 V1.0 環節

one day,虎大力給鹿小明提出來一個新的需求,為了更好的進行公司的信息化建設,虎大力想要看到代碼執行的情況,執行到某個業務的時候在控制臺有所表示,例如:執行到查詢方法的時候,需要在控制臺上出現,這是一個打印方法的信息。

服務器中的日志框架是什么

鹿小明一想,這好辦啊,本來自己為了調試測試方便就寫過很多打印語句,現在無非更多而已。于是就加班加點在所有的增刪改查方法中都寫了System.out.println()打印語句。順利完成了這個工作。

服務器中的日志框架是什么

故事進入 V2.0 環節

一段時間歲月靜好

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

鹿小明于是冥思苦想:我要不要上線的時候把打印語句注釋掉,測試的時候再打開呢?

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

服務器中的日志框架是什么

故事進入 V3.0 環節

一段時間歲月靜好

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

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

服務器中的日志框架是什么

故事進入 V4.0 環節

一段時間歲月靜好

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

鹿小明于是冥思苦想,007之后繼續007,這個需求有點難,他從JDBC上找到了靈感,JDBC通過統一接口實現了驅動的切換,日志也可以。 服務器中的日志框架是什么

于是,他爆肝搞出來一個日志接口層(日志門面),讓 1.0 和 2.0的日志框架都實現這個接口,這樣想用1.0的時候就導入1.0,想用2.0的時候就導入2.0 。順利完成了這個任務。

服務器中的日志框架是什么

服務器中的日志框架是什么

而這個設計的結構也是現在主流日志框架:log4j logback log4j2 等的結構

日志門面(接口)日志實現
SLF4J,commons-loggingLogback,Log4j

通過它們就打印出了我們常見的各種日志信息

服務器中的日志框架是什么

日志框架結構分析

日志框架實際上分為三個部分,除了上面提到的日志門面(接口)和日志庫(實現),還有日志適配器

服務器中的日志框架是什么

日志門面 接口規范

定義接口規范,不負責具體實現,也就是說以后代碼中打印日志時調用的日志門面接口的方法。常見的有 SLF4J,commons-logging 都是這樣。常見的日志門面有下面幾種

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

根據簡單的分析,在我們的代碼中如果要選擇一款 日志的接口規范的話,毫無疑問,只有 SLF4j 配得上我們的項目。

日志庫 代碼實現

日志庫是日志功能的具體實現,早期就是為了替代 System.out 語句而出現的。常用的日志庫如下:

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

在實際的開發中,log4j和logback的使用都非常的廣泛,但是如果你現在要開發的是一個新項目,那么推薦使用 logback

日志門面適配器 又名 接口實現轉換器

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

Tips:

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

  2. log4j 可以等價于 鹿小明寫的 1.0 那時候還沒有接口規范

因為這個先后順序的問題,就出現了一個很尷尬的情況,代碼實現和接口不兼容,因為log4j的代碼中沒有實現slf4j的接口,所以要使用 slf4j+log4j的話,需要有個中間層(日志門面適配器)來解決接口的兼容問題。

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

服務器中的日志框架是什么

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

服務器中的日志框架是什么

在圖中標記了 1 2 3 4,對照前面的概念解釋一下

標記1:這是只有接口規范,沒有日志實現的情況,項目中只有接口沒有實現也就不會有任何日志信息輸出。

標記2:應用代碼中使用logback作為日志庫實現,通過圖示可以看到logback是直接實現SLF4J接口的,不需要“轉換器”。接口層+代碼實現。這也是logback和log4j的區別之一。

標記3:應用代碼中使用log4j作為日志庫實現,這個圖示在slf4j-api.jar之后,還有一個slf4j-log4j12.jar,他就是我們提到過的“轉換器”日志門面適配器。接口層+轉換器+代碼實現 的關系。

標記4:這個圖示中也有轉接頭jar包,只不過這個jar包是為了兼容log-jdk。

那么問題來了,logback和log4j在使用上有什么區別?

日志庫適配器 又名slf4j如何一統日志江湖?

日志門面適配器“接口實現轉接器”解決了接口規范和實現之間不兼容的問題。我們終于可以愉快的開始枯燥的日志打印了。

但是慢著,難道沒有覺得哪里不對嗎?你品,你細品

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

咋能做到呢?這就要用到日志庫適配器了。它也是一個轉接頭,舉個栗子

slf4j 相當于只有type-c接口的蘋果電腦。現在你有很多U盤想接到電腦上,但是U盤用的是USB接口,要怎么辦呢?

買一個 type-c 轉 USB的轉換器即可

服務器中的日志框架是什么

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

服務器中的日志框架是什么

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

服務器中的日志框架是什么

這張圖我們先豎著看,就是應用程序使用的logback做日志框架,接口規范+實現的簡單關系。

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

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

1.我們需要先排除 commons-logging.jar ,畢竟它壓根兒就沒有輸出到slf4j的功能,但是排除之后spring會報錯啊,不要慌 這就到了第二步。

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

這個中間轉換器包就是就是日志庫適配器。

簡單吧,通過上述兩步就可以實現 commons-logging 統一到slf4j 。

通過這樣的邏輯,可以很簡單的把log4j,log-jdk 也都能通過中間的轉換包統一到slf4j,也就實現了slf4j一統日志江湖。

關于“服務器中的日志框架是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“服務器中的日志框架是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

唐山市| 阳新县| 维西| 财经| 巫山县| 吉安市| 鸡泽县| 宣汉县| 嘉定区| 潞西市| 呼和浩特市| 天全县| 铁力市| 双桥区| 体育| 临城县| 清丰县| 雷波县| 深水埗区| 海兴县| 阜新市| 兴仁县| 永济市| 乌拉特后旗| 慈利县| 榆林市| 林西县| 木兰县| 鄢陵县| 淮安市| 宁武县| 巫山县| 栾川县| 成安县| 平江县| 襄樊市| 方山县| 绵竹市| 灵石县| 湖南省| 报价|