log4j.xml配置实例

1.log4j简单介绍

log4j的三大组件:loggers、appenders、layout

  • loggers为日志记录器,负责处理日志记录的大部分操作。
  • appenders 为日志信息的输出目的地,log4j中所有继承自Appender接口的类。他们一起定义了log4j需要把日志写到哪些地方,比如数据库或者是文件。
  • layout为日志信息的输出格式。

log4j输出信息的类别level为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL等。常用优先级为:ERROR>WARN>INFO>DEBUG。

举个例子:如果配置的level级别为WARN,那么意味着只有WARN、ERROR、FATAL被输出。DEBUG、INFO将被屏蔽掉。

log4j支持两种配置文件格式,一种是XML格式的文件,一种时properties格式的文件。

2.言归正传,log4j.xml如何配置?

  1. 引入log4j的依赖
        
            log4j
            log4j
            1.7.12 
        

        
            org.slf4j
            slf4j-api
        

        
            org.slf4j
            slf4j-log4j12
        

     2.log.xml的配置






    
    
		
	


    
    
    
        
        
        
        
        
        
        
        
            
            
            
        
    

    
    
        
        
        
        
        
        
        
            
            
            
        
    


	
		
		
	

  
    
        
        
        
    

    3. 测试类,程序中使用

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

/**
 * log4j测试
 */
@Service
public class Log4jTest {
    private Logger logger = LoggerFactory.getLogger(Log4jTest.class);

    protected void TestLog() {
        logger.trace("trace级别的日志输出");
        logger.debug("debug级别的日志输出");
        logger.info("info级别的日志输出");
        logger.warn("warn级别的日志输出");
        logger.error("error级别的日志输出");
    }
}

注意:

1:当additivity="false"时,root中的配置就失灵了,不遵循缺省的继承机制

2:logger中的name非常重要,它代表记录器的包的形式,有一定的包含关系,试验表明

   2-1:当定义的logger的name同名时,只有最后的那一个才能正确的打印日志

   2-2:当对应的logger含有包含关系时,比如:name=com.test.log4j和 name=com.test.log4j.test11,则2-1的情况是一样的

   2-3:logger的name表示所有的包含在此名的所有记录器都遵循同样的配置,name的值中的包含关系是指记录器的名称!

3:logger中定义的level和appender中的filter定义的level的区间取交集

4:如果appender中的filter定义的 levelMin > levelMax ,则打印不出日志信息

你可能感兴趣的:(IT相关,学习总结)