zoukankan      html  css  js  c++  java
  • 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接口中规定了日志的输出的方法,根据相应的参数需要设置就可以在控制台看到输出的日志信息了。

  • 相关阅读:
    自定义 cell
    iOS的自动布局
    通过字符串获取沙盒路径延展类
    Orcale nvl函数
    Orcale sign函数
    Orcale decode函数
    Orcale rpad函数
    mapper.xml速查
    Spring Boot整合SpringMVC应用
    Spring Boot 整合MyBatis框架
  • 原文地址:https://www.cnblogs.com/lizhen-home/p/7655869.html
Copyright © 2011-2022 走看看