java日志框架log4j2配置详解

官方文档:http://logging.apache.org/log4j/2.x/manual/configuration.html

Log4j2简介
log4j2是log4j 1.x 的升级版,2015年5月,Apache宣布log4j1.x 停止更新。最新版为1.2.17。

log4j2借鉴了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,主要有:
1、异常处理:在logback中,Appender中的异常不会被应用感知到,但是在log4j2中,提供了一些异常处理机制。
2、性能提升:log4j2相较于log4j 1和logback都具有很明显的性能提升,在异步配置下是logback的10倍左右。
3、自动重载配置:参考了logback的设计,提供自动刷新参数配置,可以动态的修改日志的级别而不需要重启应用。
4、无垃圾机制,log4j2在大部分情况下,都可以使用其设计的一套无垃圾机制,避免频繁的日志收集导致的jvm gc。

  • java本地测试
    添加依赖
  
      
        org.apache.logging.log4j  
        log4j-api  
        2.7  
      
      
        org.apache.logging.log4j  
        log4j-core  
        2.7  
      

  • springboot需要加入:
        
            org.springframework.boot
            spring-boot-starter-web
            
                
                    org.springframework.boot
                    spring-boot-starter-logging
                
            
        

		
		    org.springframework.boot
		    spring-boot-starter-log4j2
		

具体的配置如下:
在resource文件下创建log4j2.xml





    
        D:/logs
        std
        error
    
    
    
        
        
            
            
            
            
        

        
        
        
            
                
                
            
            
            
        

        
        
            
                
                
            

            
                
                
            
            
            
        
    


    
    
        
            
            
            
        
        
        
    

测试如下:
java日志框架log4j2配置详解_第1张图片
测试代码:
java日志框架log4j2配置详解_第2张图片
输出如下:
在这里插入图片描述
std.log输出:
在这里插入图片描述
error.log输出:
在这里插入图片描述

这就完成了log4j2的输出配置。

log4j2配置说明
log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本常用.xml后缀的文件进行配置,除此之外还包含.json和.jsn配置文件

log4j2虽然采用xml风格进行配置,依然包含三个组件,分别是 Logger(记录器)、Appender(输出目的地)、Layout(日志布局)。

XML配置文件解析
1、根节点Configuration有两个属性:status和monitorinterval,有两个子节点:Appenders和Loggers(表明可以定义多个Appender和Logger).
status用来指定log4j本身的打印日志的级别.
monitorinterval为log4j 2.x新特点自动重载配置。指定自动重新配置的监测间隔时间,单位是s,最小是5s。

2、Appenders节点,常见的有三种子节点:Console、File、RollingFile
Console节点用来定义输出到控制台的Appender.
File节点用来定义输出到指定位置的文件的Appender.
RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender.

通过在子节点中加入进行日志布局
复制代码

%c 输出所属类的全名,可写为 %c{Num} ,Num类名输出的范围 如:"com.sun.aaa.classB",%C{2}将使日志输出输出范围为:aaa.classB
%d 输出日志时间其格式为 可指定格式 如 %d{HH:mm:ss}等
%l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
%n 换行符
%m 输出代码指定信息,如info(“message”),输出message
%p 输出日志的优先级,即 FATAL ,ERROR 等
%r 输出从启动到显示该条日志信息所耗费的时间(毫秒数)
%t 输出产生该日志事件的线程名

3、Loggers节点,常见的有两种:Root和Logger.
Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出
Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。

logback log4j log4j2 性能实测
java日志框架log4j2配置详解_第3张图片
可见在同步日志模式下, Logback的性能是不佳的
而log4j2的性能无论在同步日志模式还是异步日志模式下都是最佳的

你可能感兴趣的:(java,java,log4j2,log4j)