Log4j2基本配置

Log4j2基本配置介绍

  • Log4j2基本配置
    • 日志级别
    • 代码调用
    • 基本配置说明(xml格式)
      • Configuration
        • Appenders
        • Loggers

Log4j2基本配置

日志级别

共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF。All:最低等级的,用于打开所有日志记录,OFF:最高等级的,用于关闭所有日志记录,其余可根据需要自己设置

代码调用

public class LogTest {
   private static final Logger log = LogManager.getLogger(LogTest.class);

    public static void main(String[] args) {
        boolean flag = true;
        int i=0;
        while(i<10000){
            ThreadContext.put("userId", String.valueOf(i));
            log.error("日志输出 error:"+i++);
        }
        ThreadContext.clearAll();
    }
}

基本配置说明(xml格式)




    
        
        
            
        
        
        
            
            
            
            
            
            
                
                
                
                
            
            
            
        
    
    
    
        
        
        
        
            
            
        
        
        
            
            
            
        
    

配置简单说明:

Configuration

status为log4j2本身日志级别,比如设置all启动时可以在控制台看到log4j2对应的加载日志,monitorInterval为检查log4j2.xml更新配置文件时间(以秒为单位),设置10则表示默认每10s重新加载配置文件

Appenders

Appenders里面定义了定义输出内容,输出格式,输出方式,日志保存策略等,上面展示了通常用的两种Console(控制台输出)和RollingRandomAccessFile(文件输出),主要以文件输出作为介绍:

  • RollingRandomAccessFile:文件输出 fileName为当前日志写入的文件,filePattern为归档日志生成的格式
    • ThresholdFilter:表示当前RollingFile下输出日志过滤,如设置为error时,即使logger里面设置为debug,但是只输出error级别的日志
    • PatternLayout:日志输出的格式,参数具体可以网上查,这里面说下%X{userId},代码调用中ThreadContext.put(“userId”, String.valueOf(i)),ThreadContext设置了userId的值,在xml就可以获取到对应的值,ThreadContext类似于java中ThreadLocal,用它可以记录某个请求的特殊信息,比如用户登录信息,这样每个日志就可以清楚的记录对应每个人的操作记录。最后用ThreadContext.clearAll()来清除。
    • Policies:日志归档策略;
      • TimeBasedTriggeringPolicy:按照时间归档,interval为生成归档文件间隔,这里强调下interval的时间单位取决于filePattern中日志输出格式,例如:%d{yyyy-MM-dd-HH-mm}-%i.log则表示interval时间单位是按分钟,%d{yyyy-MM-dd}-%i.log则interval时间单位是按天归档,%i最好加上,不加可能出现同一日期维度超出文件大小归档时产生覆盖,加上归档时会输出xxx-1.log、xxx-2.log;modulate为是否调整格式使得生成下一个归档文件发生在间隔边界上,默认值为1,举个例子:例如filePattern是按照天归档(%d{yyyy-MM-dd}),interval值为8,当前时间为凌晨3:00启动程序日志开始生成,在不考虑文件大小情况下正常情况下第一个归档文件是在11点(3+8),而设置modulate=true时候则在8点就进行第一次归档,这样后面16个小时就能整好输出两次(16/8=2),说的有些啰嗦可以自己验证下。
      • SizeBasedTriggeringPolicy:文件达到指定大小后文件发生归档,单位可以为KB,MB,GB,和上面时间配合使用时,比如上面设置每天归档,则同一时间维度下文件超出限制后就会按照2020-11-11-1.log、2020-11-11-2.log拆分文件。
      • DefaultRolloverStrategy:最多保留归档文件数 超出则之前的会被覆盖.默认是7个文件

Loggers

Loggers是配置的入口,只有定义了logger并引入的appender,appender才会生效。

  1. Root为默认的日志输出配置,没有经过logger配置的包都会走这个输出,例如配置中默认的日志输出级别都是debug。includeLocation配置为true后会打印出对应输出日志的代码行数。includeLocation设置 2. logger:logger相当于自定义的日志,上面配置中org.mybatis包设置对应的日志输出级别为error,additivity="true"表示此error日志会在Root中输出;而org.springframework设置也为error,只不过设置了自己的XXXAppender,文件会输出到对应的日志上,additivity设置为false,如果设置为true,则会出现同样日志输出两份的现象,即自定义logger和Root中的Appender各自输出一份,所以自定子logger如果指定AppenderRef,最好设置additivity=“false”。

           **如果上面描述有问题欢迎评论中批评指正,谢谢!!!**
    

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