LoggerFactory.getLogger用法
Posted 嘚吧嘚吧嘚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LoggerFactory.getLogger用法相关的知识,希望对你有一定的参考价值。
简述:
使用指定类初始化日志对象,在日志输出的时候,可以打印出日志信息所在类
如:Logger logger = LoggerFactory.getLogger(com.lz.Test.class);
logger.debug("日志信息");
将会打印出: com.lz.Test : 日志信息
代码分析:
由Logger的名称可以知道这句的意思是用Logger工厂获取Logger实例,但是不明白其中的原理,看了看源码:
LoggerFactory中的getLogger方法,返回一个以name命名的静态绑定的实例,而这个name一般以Logger实例所在的类命名,如通过类名.Class.getName()获取。
1 public static Logger getLogger(String name) { 2 3 ILoggerFactory iLoggerFactory = getILoggerFactory(); 4 5 return iLoggerFactory.getLogger(name); 6 7 }
ILoggerFactory的接口实例在编译时内部绑定LoggerFactory,这个接口中只有一个public Logger getLogger(String name)方法,根据参数名称返回适当的实例
看看这个getILoggerFactory()方法
1 public static ILoggerFactory getILoggerFactory() { 2 3 if (INITIALIZATION_STATE == UNINITIALIZED) { 4 5 INITIALIZATION_STATE = ONGOING_INITIALIZATION; 6 7 performInitialization(); 8 9 } 10 11 switch (INITIALIZATION_STATE) { 12 13 case SUCCESSFUL_INITIALIZATION: 14 15 return StaticLoggerBinder.getSingleton().getLoggerFactory(); 16 17 case NOP_FALLBACK_INITIALIZATION: 18 19 return NOP_FALLBACK_FACTORY; 20 21 case FAILED_INITIALIZATION: 22 23 throw new IllegalStateException(UNSUCCESSFUL_INIT_MSG); 24 25 case ONGOING_INITIALIZATION: 26 27 // support re-entrant behavior. 28 29 // See also http://bugzilla.slf4j.org/show_bug.cgi?id=106 30 31 return TEMP_FACTORY; 32 33 } 34 35 throw new IllegalStateException("Unreachable code"); 36 37 }
很明显这是返回ILoggerFactory的实例,用于调取getLogger方法。在Logger接口中规定了日志的输出的方法,根据相应的参数需要设置就可以在控制台看到输出的日志信息了。
以上是关于LoggerFactory.getLogger用法的主要内容,如果未能解决你的问题,请参考以下文章
这句Java代码是啥意思private final Logger logger = LoggerFactory.getLogger(getClass());