国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

遵義做網(wǎng)站的公司重慶電子商務(wù)網(wǎng)站seo

遵義做網(wǎng)站的公司,重慶電子商務(wù)網(wǎng)站seo,可以做我女朋友嗎網(wǎng)站,泰州網(wǎng)站建設(shè)方案推廣日志框架出現(xiàn)的歷史順序:Log4j → JUL → JCL → slf4j → logback → log4j2 一、背景 在前面博文中,我們分別講述了常用的2個日志框架:JUL(Java Util Logging)、Log4J。那么如何選擇使用哪一個呢? 根據(jù)項…

日志框架出現(xiàn)的歷史順序:Log4j → JUL → JCL → slf4j →?logback?→ log4j2

一、背景

在前面博文中,我們分別講述了常用的2個日志框架:JUL(Java Util Logging)、Log4J。那么如何選擇使用哪一個呢?

根據(jù)項目需求而定,在項目設(shè)計之初,功能比較單一簡單,那么我們可以使用JUL日志框架,使用起來非常靈活,也不需要引入第三方依賴,隨著我們項目升級,迭代維護,功能會越來越完善,簡單的日志實現(xiàn)框架就不能滿足我們的業(yè)務(wù)需求,那么就要進行日志升級!

如果我們從JUL日志實現(xiàn)框架切換為Log4j的話,代碼會受到?jīng)_突影響,雖然Log4j在1.2以后,為了迎合JUL的設(shè)計思想,也把自己代碼改成logger了,但它的日志級別和配置信息還是有一定的差異化,如果我們的日志代碼有一萬行,那么都要進行修改,這無疑是增加了很多工作量

二、JCL的誕生

????????為了解決這個問題,apache組織就站出來了,它就將當(dāng)時比較主流的日志實現(xiàn)框架,例如 JUL、Log4j 將代碼統(tǒng)一成一套API,后期軟件開發(fā)階段,只需要關(guān)聯(lián)這套統(tǒng)一的API,就可以操作某一個日志實現(xiàn)框架的日志記錄了,代碼無需發(fā)生改變。

以面向接口的方式,來操作具體的實現(xiàn)。一種解耦合的思想,這個技術(shù)就是:JCL

比如web應(yīng)用需要進行日志記錄的話,不再直接依賴log4j、jdk14等日志實現(xiàn)了,而是依賴JCL這套統(tǒng)一的接口API,它會幫助我們調(diào)用具體的日志實現(xiàn):

三、JCL 是什么?


JCL 全稱為Jakarta Commons Logging,是Apache提供的一個通用日志API。

它是為 “所有的Java日志實現(xiàn)” 提供一個統(tǒng)一的接口,它自身也提供一個日志的實現(xiàn),但是功能非常弱(SimpleLog)。所以一般不會單獨使用它,它允許開發(fā)人員使用不同的具體日志實現(xiàn)工具:Log4j,JDK自帶的日志(JUL)

JCL 有兩個基本的抽象類:Log(基本記錄器)和 LogFactory(負(fù)責(zé)創(chuàng)建Log實例)

???????快速入門案例:

? ? ? ? 引入依賴:

         <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency>

? ? ? ? 代碼示例:

        // 獲取日志記錄器對象Log log = LogFactory.getLog(logDemo.class.getName());// 輸出日志log.info("info"); // 程序運行信息,數(shù)據(jù)庫的連接、網(wǎng)絡(luò)、IO操作等

? ? ? ? 說明:
? ? ? ? 1、首先跟log4j 和 JUL創(chuàng)建日志對象不同的是,JCL是用LogFactory創(chuàng)建的對象,創(chuàng)建的類型是Log不是Logger。
? ? ? ? 2、其次底層調(diào)用Log4j 或 JUL(Java util logging) ,具體調(diào)用哪個取決于引入了哪個組件,上述例子沒有引入Log4j依賴,因此它底層用的是JUL日志框架。
? ? ? ? ·

? ? ? ? 如果我們引入Log4j依賴:

<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.13</version>
</dependency>

? ? ? ? ?更改引入類型,運行代碼,會提示:

會提示:找不到logger對象的appenders處理器,它希望我們設(shè)置并初始化一個系統(tǒng)配置信息,因為Log4j是需要初始化配置,或者引入配置文件的,所以要先加入配置文件,配置文件就不講了,前面的log4j已經(jīng)講過,直接拷貝進來就好。
再次運行代碼就可以了。

四、JCL原理

其內(nèi)部主要通過LogFactory 日志工廠去加載具體的日志實現(xiàn):

1. 通過LogFactory動態(tài)加載Log實現(xiàn)類

說明:Log類是一個接口,其實現(xiàn)它有4個日志框架

  • SimpleLog:JCL的內(nèi)置日志實現(xiàn)
  • Log4JLogger:log4j 日志框架
  • Jdk14Logger:JUL(Java Util Logging)
  • Jdk13LumberjackLogger:Jdk老版本的內(nèi)置日志實現(xiàn)

?2. 日志門面支持的日志實現(xiàn)數(shù)組
public class LogFactoryImpl extends LogFactory {.....private static final String[] classesToDiscover = new String[].?{"org.apache.commons.logging.impl.Log4JLogger",?"org.apache.commons.logging.impl.Jdk14Logger",?"org.apache.commons.logging.impl.Jdk13LumberjackLogger",?"org.apache.commons.logging.impl.SimpleLog"};.....}


? 說明:日志工廠其內(nèi)部有一個加載日志的數(shù)組,加載順序是按照數(shù)組順序來的,這也解釋了為什么入門案例中引入了Log4J,JCL內(nèi)部日志框架就從JUL切換至Log4J了。

3. 具體實現(xiàn)代碼

for(int i = 0; i < classesToDiscover.length && result == null; ++i) {
? ? result = this.createLogFromClass(classesToDiscover[i], logCategory, true);
}
? 說明:通過日志數(shù)組順序加載日志框架,如果沒有找到,則繼續(xù)加載下一個,否則直接返回。

? 源碼斷點查看執(zhí)行流程


1. 測試類中斷點debug模式進入

2. 進入到內(nèi)部實現(xiàn),首先初始化的是一個日志工廠 getFactory()

2. 我們暫時不關(guān)心它的實現(xiàn),因此直接跳出 getFactory()

3. 繼續(xù)點擊進入 ,會進入到getInstance(clazz) 方法內(nèi)部

4. getInstance(clazz)方法如下,其實際進行了一次封裝,因此進入到內(nèi)部實際初始化代碼中

5. 對象初始化代碼實現(xiàn)如下,進入點擊進入到 discoverLogImplementation 方法

6. ?discoverLogImplementation 方法才是最終加載具體日志框架的實現(xiàn),for循環(huán)加載日志數(shù)組,第一個是log4j,如果加載成功,則直接返回,否則按照順序往下遍歷加載

7. for 循環(huán)加載方法 this.createLogFromClass(),其內(nèi)部實現(xiàn)是通過反射進行記載日志框架的

8. 由于我們增加了log4j依賴,因此直接可以拿到log4j的類名,進行反射獲取到,最后直接返回

SimpleLog:JCL的內(nèi)置日志實現(xiàn)
Log4JLogger:log4j 日志框架
Jdk14Logger:JUL(Java Util Logging)
Jdk13LumberjackLogger:Jdk老版本的內(nèi)置日志實現(xiàn)

日志門面技術(shù)(3):JCL(Jakarta Commons Logging)_jakartacommonsloggingimpl-CSDN博客

http://m.aloenet.com.cn/news/40499.html

相關(guān)文章:

  • 家用電腦如何做網(wǎng)站服務(wù)器百度總部公司地址在哪里
  • 做網(wǎng)站可以用什么語言長春網(wǎng)站優(yōu)化平臺
  • 購物網(wǎng)站建設(shè)公司網(wǎng)絡(luò)營銷管理名詞解釋
  • wordpress國內(nèi)支付上海搜索優(yōu)化推廣
  • html可以做動態(tài)網(wǎng)站嗎我是seo關(guān)鍵詞
  • 應(yīng)用商城下載seo服務(wù)是什么
  • 怎么用文件做網(wǎng)站快速優(yōu)化網(wǎng)站排名軟件
  • 淄博桓臺網(wǎng)站建設(shè)報價湘潭關(guān)鍵詞優(yōu)化公司
  • erp系統(tǒng)軟件免費版優(yōu)化營商環(huán)境心得體會2023
  • 番禺做網(wǎng)站公司哪家好網(wǎng)店推廣的方式
  • 一般做網(wǎng)站淘寶推廣軟件
  • 德州網(wǎng)站建設(shè)公司seo引擎優(yōu)化方案
  • 什么學(xué)做網(wǎng)站深圳網(wǎng)絡(luò)營銷推廣外包
  • php網(wǎng)站搬家軟件成都疫情最新消息
  • 有沒有做美食的網(wǎng)站網(wǎng)絡(luò)營銷的認(rèn)識與理解
  • 阿里云空間部署網(wǎng)站微信推廣加人
  • 設(shè)計網(wǎng)站推薦素材網(wǎng)站怎么去做推廣
  • 青島網(wǎng)站建設(shè)優(yōu)化長沙官網(wǎng)seo推廣
  • 游戲推廣群seo網(wǎng)絡(luò)優(yōu)化招聘信息
  • sql數(shù)據(jù)庫查詢網(wǎng)站模板搜索引擎優(yōu)化的要點
  • 做網(wǎng)站必須得ipc百度熱搜榜今日頭條排名
  • 日照建網(wǎng)站廣告公司收費價格表
  • 網(wǎng)站怎么弄二維碼服務(wù)營銷理論
  • 官網(wǎng)網(wǎng)站建設(shè)收費公司網(wǎng)站設(shè)計模板
  • 海南做網(wǎng)站請輸入搜索關(guān)鍵詞
  • 網(wǎng)頁版夢幻西游火眼金睛seo人才招聘
  • 南京seo排名收費廣州網(wǎng)站優(yōu)化軟件
  • 做網(wǎng)站的任務(wù)書淄博seo培訓(xùn)
  • 湖州做網(wǎng)站建設(shè)的公司女教師遭網(wǎng)課入侵直播錄屏曝光se
  • java做網(wǎng)站用什么軟件新聞報道最新消息今天