摘要:简介常用的日志主流框架基本上是基于搭配来实现日志输出依赖包解析我们获取日志实体代码具体获取日志实体源码这里类就必须在中声明并且通过调用获取一个实现了的实例这里获取单例是通过饿汉式依赖实体改成依赖一个接口是否更加优雅然后通过的
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使用
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67006.html
摘要:的继承关系使用做日志输出时,首先我们需要一个创建一个对象。再设计多级别的日志系统时,尤其要注意这点。当然,这样做其实是有悖于的本意的。是什么是一个程序内全局唯一的,所有对象的祖先。因此,直接修改是危险的。 0x00 python logging的继承关系 使用python做日志输出时,首先我们需要一个创建一个Logger对象:import logging; logger = log...
阅读 3322·2021-11-25 09:43
阅读 3007·2021-10-15 09:43
阅读 1964·2021-09-08 09:36
阅读 2918·2019-08-30 15:56
阅读 741·2019-08-30 15:54
阅读 2683·2019-08-30 15:54
阅读 2971·2019-08-30 11:26
阅读 1236·2019-08-29 17:27