码迷,mamicode.com
首页 > 其他好文 > 详细

Logger LOG = LoggerFactory.getLogger()

时间:2015-05-12 11:39:24      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:ehcache   源码   

由Logger的名称可以知道这句的意思是用Logger工厂获取Logger实例,但是不明白其中的原理,看了看源码:

LoggerFactory中的getLogger方法,返回一个以name命名的静态绑定的实例,而这个name一般以Logger实例所在的类命名,如通过类名.Class.getName()获取。

  public static Logger getLogger(String name) {
    ILoggerFactory iLoggerFactory = getILoggerFactory();
    return iLoggerFactory.getLogger(name);
  }
ILoggerFactory的接口实例在编译时内部绑定LoggerFactory,这个接口中只有一个public Logger getLogger(String name)方法,根据参数名称返回适当的实例

看看这个getILoggerFactory()方法

  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:
        // support re-entrant behavior.
        // See also http://bugzilla.slf4j.org/show_bug.cgi?id=106
        return TEMP_FACTORY;
    }
    throw new IllegalStateException("Unreachable code");
  }
}
很明显这是返回ILoggerFactory的实例,用于调取getLogger方法。在Logger接口中规定了日志的输出的方法,根据相应的参数需要设置就可以在控制台看到输出的日志信息了。

Logger LOG = LoggerFactory.getLogger()

标签:ehcache   源码   

原文地址:http://blog.csdn.net/maoyeqiu/article/details/45664997

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!