摘要:簡介依賴包解析并沒有實現相應的接口所以加了一層橋接層包里面的內容來實現對的調用里面的代碼很簡單只有個類關鍵的兩個類是和對應的方法源碼實現了的接口調用方法獲取實現了的接口并且實際代理了類所以對的所有方法調用最終調用的都是對應的方法小
SLF4J&&Log4j 簡介
依賴jar包:slf4j-api-x.x.x.jar,log4j.jar,slf4j-log4j12.jar
解析log4j并沒有實現slf4j相應的接口,所以加了一層橋接層(slf4j-log4j12.jar包里面的內容)來實現slf4j對log4j的調用
slf4j-log4j12.jar里面的代碼很簡單
只有5個類,關鍵的兩個類是Log4jLoggerFactory和Log4jLoggerAdapter,對應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實現了slf4j的ILoggerFactory接口,調用getLogger方法獲取Logger
Log4jLoggerAdapter實現了slf4j的Logger接口,并且實際代理了org.apache.log4j.Logger類,所以對Log4jLoggerAdapter的所有方法調用,最終調用的都是org.apache.log4j.Logger對應的方法
小結log4j是通過slf4j-log4j12.jar橋接包來完美適配slf4j使用
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67017.html
摘要:的繼承關系使用做日志輸出時,首先我們需要一個創建一個對象。再設計多級別的日志系統時,尤其要注意這點。當然,這樣做其實是有悖于的本意的。是什么是一個程序內全局唯一的,所有對象的祖先。因此,直接修改是危險的。 0x00 python logging的繼承關系 使用python做日志輸出時,首先我們需要一個創建一個Logger對象:import logging; logger = log...
閱讀 1507·2021-11-25 09:43
閱讀 4057·2021-11-15 11:37
閱讀 3192·2021-08-17 10:13
閱讀 3503·2019-08-30 14:16
閱讀 3535·2019-08-26 18:37
閱讀 2489·2019-08-26 11:56
閱讀 1128·2019-08-26 10:42
閱讀 609·2019-08-26 10:39