Log4j2

Log4j2

log4j2的好处看了以下主要体现在这么几点,提升底层运行效率,异步输出之类的,配置文件支持json等相关优化,对API进行了优化,但是API对外表现的好像看不太出来。

日志级别

log4j2的日志级别有很多,但是一般使用error,info,debug最多在加上一个warn(一般也没有使用到,另外trace是最低级别)。

  • error:记录错误级别的日志信息,有异常发生之类的。
  • warn:记录警告级别的信息。
  • info:记录常用的日志信息,一般记录一些开始,结束和相关的关键字段。
  • debug:记录debug级别的调试信息。

依赖

log4j2需要导入两个jar包,分别为

log4j-core-xx.jar
log4j-api-xx.jar

如果使用maven导入相关jar,可以参考下面的pom文件。
pom.xml文件



    4.0.0

    cn.qingtianr
    demo
    1.0-SNAPSHOT

    
        
        
        
        
        

        
            org.apache.logging.log4j
            log4j-api
            2.7
        
        
            org.apache.logging.log4j
            log4j-core
            2.7
        

    


Example

log4j2Test.java

package cn.qingtianr;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;


public class log4j2Test {
    //使用LogManager来获得Logger(和log4j不一样了)
    private static Logger logger = LogManager.getLogger(log4j2Test.class);

    public static void main(String[] args) {

        logger.error("我是error信息");
        logger.warn("我是warn信息");
        logger.info("我是info信息");
        logger.debug("我是debug信息");


    }
}

配置文件

在classpath目录下面需要有一个配置文件。

在默认情况下,系统选择configuration文件的优先级如下:(classpath为scr文件夹)

  1. classpath下名为 log4j-test.json 或者log4j-test.jsn文件
  2. classpath下名为 log4j2-test.xml
  3. classpath下名为 log4j.json 或者log4j.jsn文件
  4. classpath下名为 log4j2.xml

如果是用maven管理的话,那么可以直接放在resouces里面就可以了。其实可以发现log4j2是不在支持properties,但是都是支持xml来配置的。

下面这个可以认为是没有配置文件时的时候的默认配置。

  
  
    
      
        
      
    
    
      
        
      
    

所以在默认的配置下面可以在控制台中看到以下输出信息。因为默认是error级别的信息,所以只会有error级别的信息。

14:35:54.002 [main] ERROR cn.qingtianr.log4j2Test - 我是error信息

如果把中的error改为info,那么将会输出以下日志信息。也就是说会输出所有info级别及以上级别的日志信息。

14:38:01.086 [main] ERROR cn.qingtianr.log4j2Test - 我是error信息
14:38:01.088 [main] WARN  cn.qingtianr.log4j2Test - 我是warn信息
14:38:01.088 [main] INFO  cn.qingtianr.log4j2Test - 我是info信息

Appenders




    
    
        
        
            
            
            
            
        
        
        
            
        

        
        
            
            
        
    
    
    
        
        
            
            
        

    

把这个配置文件和之前简单的配置文件进行比较可以知道appender的使用方式,主要的appender有下面几种。

  • ConsoleAppender:用来输出到控制台
  • FileAppender:用来输出到文件中
  • RollingFileAppender:用来将到一定大小的文件按时间进行存档

Layout

可以将传入的日志信息已一定格式进行输出,有HTML格式的,CVS格式的等,最主要使用的应该就是PatternLayout,有点类似于格式化输出的情况。

例子项目截图

Log4j2_第1张图片
Log4j2例子目录结构

其中有自己log4j的东西,省略.....

Other

具体的配置文件中的东西,可以参考官方文档。

一些其他问题

  • Log4j(或者Log4j2)和Spring是如何关联起来的,可以弄个详细的东西来简单描述一下。Spring的core包使用的日志工具会自动找寻classpath下面的jar包,如果发现有Log4j或者Log4j2的jar包,会直接导入进去的。
  • 但是如果没有使用Spring的话,是需要手动在web.xml中使用一个监听器来将Log4j(或者Log4j2)的配置文件给读入进去的。
  • 利用Log4j是可以将Mybatis里面最终执行的数据库的sql语句给纪录下来的,所以下次可以做一个简单的demo出来。

参考

log4j2的API
log4j2的提升点
Log4j的isdebugEnabled的作用
Log4j 2使用教程

你可能感兴趣的:(Log4j2)