成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

由日志打不出引出的知識(shí)圖譜(一)

FullStackDeveloper / 2009人閱讀

摘要:由日志打不出引出的知識(shí)圖譜一當(dāng)我們調(diào)用的時(shí)候發(fā)生了什么目前業(yè)界日志標(biāo)配當(dāng)我們調(diào)用的的時(shí)候到底發(fā)生了什么貼一張執(zhí)行流程圖這里出現(xiàn)了一個(gè)關(guān)鍵對(duì)象如果的局部變量值為就調(diào)用父進(jìn)行日志打印結(jié)合實(shí)際場(chǎng)景解釋一下上述是某個(gè)工程的的配置文件就是配置中

由日志打不出引出的知識(shí)圖譜(一)
當(dāng)我們調(diào)用Logger.error的時(shí)候發(fā)生了什么

目前業(yè)界日志標(biāo)配slf4j + logback,當(dāng)我們調(diào)用slf4j的Logger.error()的時(shí)候到底發(fā)生了什么?貼一張Logger執(zhí)行流程圖

這里出現(xiàn)了一個(gè)關(guān)鍵對(duì)象AppenderAttachableImpl,如果Logger的局部變量值為null,就調(diào)用父Logger進(jìn)行日志打印,結(jié)合實(shí)際場(chǎng)景解釋一下

    


    
          .....
    

    
          .....
    

    
        
    
    
    
        
    

上述是某個(gè)工程的logback.xml的配置文件,AppenderAttachableImpl就是配置中的appender元素節(jié)點(diǎn)的抽象,那么對(duì)如果Logger局部變量AppenderAttachableImplnull,則調(diào)用父Logger,這里的父Logger就是代表ROOT節(jié)點(diǎn)的Logger實(shí)例

接下來(lái)關(guān)注另外一個(gè)問(wèn)題Logger局部變量AppenderAttachableImpl什么才為null,來(lái)看下Logger的創(chuàng)建過(guò)程,根據(jù)Logger logger = LoggerFactory.getLogger("name");定位到類ch.qos.logback.classic.LoggerContext構(gòu)造方法

在構(gòu)造方法中創(chuàng)建了ROOT Logger實(shí)例,接下來(lái)看下實(shí)際創(chuàng)建Logger實(shí)例代碼

如果loggerCache存在對(duì)應(yīng)實(shí)例則直接返回,如果ROOT-Logger.getChildByName找不到對(duì)應(yīng)nameLogger,就創(chuàng)建一個(gè)Logger

這里可以看出創(chuàng)建的Logger實(shí)例的父Logger就是ROOT-Logger,但是在創(chuàng)建的時(shí)候并沒(méi)有涉及到AppenderAttachableImpl的賦值.接下來(lái)再探索一下,AppenderAttachableImpl的賦值過(guò)程(基于SpringBoot)
直接定位到初始化類ch.qos.logback.classic.joran.action.LoggerAction

ch.qos.logback.core.joran.action.AppenderRefAction

在解析logback.xml在解析到元素的時(shí)候會(huì)創(chuàng)建相應(yīng)Logger實(shí)例,并且如果有子元素,就給實(shí)例的AppenderAttachableImpl賦值

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68301.html

相關(guān)文章

  • 架構(gòu)

    摘要:分布式架構(gòu)實(shí)踐負(fù)載均衡在網(wǎng)站創(chuàng)立初期,我們一般都使用單臺(tái)機(jī)器對(duì)臺(tái)提供集中式服務(wù),但是隨著業(yè)務(wù)量越來(lái)越大,無(wú)論是性能上還是穩(wěn)定性上都有了更大的挑戰(zhàn)。就鹿晗宣布戀情導(dǎo)致微博宕機(jī)事件淺談大型網(wǎng)站高可用性架構(gòu)中午吃飯刷著刷著微博發(fā)現(xiàn)微博突然掛了。 分布式架構(gòu)實(shí)踐——負(fù)載均衡 在網(wǎng)站創(chuàng)立初期,我們一般都使用單臺(tái)機(jī)器對(duì)臺(tái)提供集中式服務(wù),但是隨著業(yè)務(wù)量越來(lái)越大,無(wú)論是性能上還是穩(wěn)定性上都有了更大的挑...

    Pink 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

FullStackDeveloper

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<