摘要:簡(jiǎn)介常用的日志主流框架基本上是基于搭配來(lái)實(shí)現(xiàn)日志輸出依賴包解析我們獲取日志實(shí)體代碼具體獲取日志實(shí)體源碼這里類就必須在中聲明并且通過調(diào)用獲取一個(gè)實(shí)現(xiàn)了的實(shí)例這里獲取單例是通過餓漢式依賴實(shí)體改成依賴一個(gè)接口是否更加優(yōu)雅然后通過的
SLF4J&&Logback 簡(jiǎn)介
常用的日志主流框架基本上是基于slf4j搭配logback來(lái)實(shí)現(xiàn)日志輸出
依賴jar包:slf4j-api-x.x.x.jar,logback-classic-x.x.x.jar,logback-core-x.x.x.jar
我們獲取日志實(shí)體代碼:
Logger log = LoggerFactory.getLogger("test");
具體獲取日志實(shí)體源碼:
public static Logger getLogger(String name) { ILoggerFactory iLoggerFactory = getILoggerFactory(); return iLoggerFactory.getLogger(name); } public static ILoggerFactory getILoggerFactory() { if (INITIALIZATION_STATE == UNINITIALIZED) { INITIALIZATION_STATE = ONGOING_INITIALIZATION; performInitialization(); } switch (INITIALIZATION_STATE) { case SUCCESSFUL_INITIALIZATION: return StaticLoggerBinder.getSingleton().getLoggerFactory(); case NOP_FALLBACK_INITIALIZATION: return NOP_FALLBACK_FACTORY; case FAILED_INITIALIZATION: throw new IllegalStateException(UNSUCCESSFUL_INIT_MSG); case ONGOING_INITIALIZATION: return TEMP_FACTORY; } throw new IllegalStateException("Unreachable code"); }
這里類StaticLoggerBinder 就必須在logback-classic-x.x.x.jar中聲明,并且通過調(diào)用StaticLoggerBinder.getSingleton().getLoggerFactory()獲取一個(gè)實(shí)現(xiàn)了ILoggerFactory的實(shí)例
(這里獲取單例是通過餓漢式,依賴StaticLoggerBinder實(shí)體改成依賴一個(gè)接口是否更加優(yōu)雅,然后通過SPI的方式來(lái)獲取不同包里面的的不同實(shí)現(xiàn))
public interface ILoggerFactory { public Logger getLogger(String name); }
獲取一個(gè)實(shí)現(xiàn)了Logger接口的實(shí)例,具體接口的實(shí)現(xiàn)是在logback-classic-x.x.x.jar中,結(jié)合logback-core-x.x.x.jar包括了所有的日志輸出的細(xì)節(jié)
小結(jié)logback是通過直接實(shí)現(xiàn)接口來(lái)搭配slf4j使用
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/67006.html
摘要:簡(jiǎn)介依賴包解析并沒有實(shí)現(xiàn)相應(yīng)的接口所以加了一層橋接層包里面的內(nèi)容來(lái)實(shí)現(xiàn)對(duì)的調(diào)用里面的代碼很簡(jiǎn)單只有個(gè)類關(guān)鍵的兩個(gè)類是和對(duì)應(yīng)的方法源碼實(shí)現(xiàn)了的接口調(diào)用方法獲取實(shí)現(xiàn)了的接口并且實(shí)際代理了類所以對(duì)的所有方法調(diào)用最終調(diào)用的都是對(duì)應(yīng)的方法小 SLF4J&&Log4j 簡(jiǎn)介 依賴jar包:slf4j-api-x.x.x.jar,log4j.jar,slf4j-log4j12.jar 解析 log4...
摘要:的繼承關(guān)系使用做日志輸出時(shí),首先我們需要一個(gè)創(chuàng)建一個(gè)對(duì)象。再設(shè)計(jì)多級(jí)別的日志系統(tǒng)時(shí),尤其要注意這點(diǎn)。當(dāng)然,這樣做其實(shí)是有悖于的本意的。是什么是一個(gè)程序內(nèi)全局唯一的,所有對(duì)象的祖先。因此,直接修改是危險(xiǎn)的。 0x00 python logging的繼承關(guān)系 使用python做日志輸出時(shí),首先我們需要一個(gè)創(chuàng)建一個(gè)Logger對(duì)象:import logging; logger = log...
閱讀 3489·2021-11-25 09:43
閱讀 3154·2021-10-15 09:43
閱讀 2106·2021-09-08 09:36
閱讀 3113·2019-08-30 15:56
閱讀 878·2019-08-30 15:54
閱讀 2836·2019-08-30 15:54
閱讀 3127·2019-08-30 11:26
閱讀 1385·2019-08-29 17:27