摘要:簡(jiǎn)介依賴包解析并沒有實(shí)現(xiàn)相應(yīng)的接口所以加了一層橋接層包里面的內(nè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
解析log4j并沒有實(shí)現(xiàn)slf4j相應(yīng)的接口,所以加了一層橋接層(slf4j-log4j12.jar包里面的內(nèi)容)來實(shí)現(xiàn)slf4j對(duì)log4j的調(diào)用
slf4j-log4j12.jar里面的代碼很簡(jiǎn)單
只有5個(gè)類,關(guān)鍵的兩個(gè)類是Log4jLoggerFactory和Log4jLoggerAdapter,對(duì)應(yīng)Log4jLoggerFactory的getLogger方法源碼:
public Logger getLogger(String name) { Logger slf4jLogger = loggerMap.get(name); if (slf4jLogger != null) { return slf4jLogger; } else { org.apache.log4j.Logger log4jLogger; if(name.equalsIgnoreCase(Logger.ROOT_LOGGER_NAME)) log4jLogger = LogManager.getRootLogger(); else log4jLogger = LogManager.getLogger(name); Logger newInstance = new Log4jLoggerAdapter(log4jLogger); Logger oldInstance = loggerMap.putIfAbsent(name, newInstance); return oldInstance == null ? newInstance : oldInstance; } }
Log4jLoggerFactory實(shí)現(xiàn)了slf4j的ILoggerFactory接口,調(diào)用getLogger方法獲取Logger
Log4jLoggerAdapter實(shí)現(xiàn)了slf4j的Logger接口,并且實(shí)際代理了org.apache.log4j.Logger類,所以對(duì)Log4jLoggerAdapter的所有方法調(diào)用,最終調(diào)用的都是org.apache.log4j.Logger對(duì)應(yīng)的方法
小結(jié)log4j是通過slf4j-log4j12.jar橋接包來完美適配slf4j使用
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/67017.html
摘要:簡(jiǎn)介常用的日志主流框架基本上是基于搭配來實(shí)現(xiàn)日志輸出依賴包解析我們獲取日志實(shí)體代碼具體獲取日志實(shí)體源碼這里類就必須在中聲明并且通過調(diào)用獲取一個(gè)實(shí)現(xiàn)了的實(shí)例這里獲取單例是通過餓漢式依賴實(shí)體改成依賴一個(gè)接口是否更加優(yōu)雅然后通過的 SLF4J&&Logback 簡(jiǎn)介 常用的日志主流框架基本上是基于slf4j搭配logback來實(shí)現(xiàn)日志輸出 依賴jar包:slf4j-api-x.x.x.ja...
摘要:的繼承關(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...
閱讀 1602·2021-11-25 09:43
閱讀 4159·2021-11-15 11:37
閱讀 3263·2021-08-17 10:13
閱讀 3572·2019-08-30 14:16
閱讀 3603·2019-08-26 18:37
閱讀 2546·2019-08-26 11:56
閱讀 1211·2019-08-26 10:42
閱讀 700·2019-08-26 10:39