摘要:簡介常用的日志主流框架基本上是基于搭配來實現日志輸出依賴包解析我們獲取日志實體代碼具體獲取日志實體源碼這里類就必須在中聲明并且通過調用獲取一個實現了的實例這里獲取單例是通過餓漢式依賴實體改成依賴一個接口是否更加優雅然后通過的
SLF4J&&Logback 簡介
常用的日志主流框架基本上是基于slf4j搭配logback來實現日志輸出
依賴jar包:slf4j-api-x.x.x.jar,logback-classic-x.x.x.jar,logback-core-x.x.x.jar
我們獲取日志實體代碼:
Logger log = LoggerFactory.getLogger("test");
具體獲取日志實體源碼:
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中聲明,并且通過調用StaticLoggerBinder.getSingleton().getLoggerFactory()獲取一個實現了ILoggerFactory的實例
(這里獲取單例是通過餓漢式,依賴StaticLoggerBinder實體改成依賴一個接口是否更加優雅,然后通過SPI的方式來獲取不同包里面的的不同實現)
public interface ILoggerFactory { public Logger getLogger(String name); }
獲取一個實現了Logger接口的實例,具體接口的實現是在logback-classic-x.x.x.jar中,結合logback-core-x.x.x.jar包括了所有的日志輸出的細節
小結logback是通過直接實現接口來搭配slf4j使用
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67006.html
摘要:的繼承關系使用做日志輸出時,首先我們需要一個創建一個對象。再設計多級別的日志系統時,尤其要注意這點。當然,這樣做其實是有悖于的本意的。是什么是一個程序內全局唯一的,所有對象的祖先。因此,直接修改是危險的。 0x00 python logging的繼承關系 使用python做日志輸出時,首先我們需要一個創建一個Logger對象:import logging; logger = log...
閱讀 3323·2021-11-25 09:43
閱讀 3008·2021-10-15 09:43
閱讀 1965·2021-09-08 09:36
閱讀 2918·2019-08-30 15:56
閱讀 742·2019-08-30 15:54
閱讀 2684·2019-08-30 15:54
閱讀 2973·2019-08-30 11:26
閱讀 1237·2019-08-29 17:27