SpringBoot 集成 Logback 日志按天生产并分类存储

SpringBoot 集成 Logback 并日志分类

  • pom
  • 配置
  • 根据业务逻辑保存对应日志
  • logback 配置日志按天产生日志文件
  • 无法按天产生日志文件解决方法

pom

        
            org.springframework.boot
            spring-boot-starter-logging
        

配置

在和 application.xml 同一级别目录添加配置文件 logback.xml (名字必须相同), 配置如下



    
    

    
        
            [%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n
            UTF-8
        
    

    
        true
        
        
            INFO
            ACCEPT
            DENY
        
        
            ${LOG_HOME}/info/open-info-%d{yyyy-MM-dd}.log
            30
        

        
            [%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n
            UTF-8
        
    

    
        true
        
        
            ERROR
            ACCEPT
            DENY
        
        
            ${LOG_HOME}/error/open-error-%d{yyyy-MM-dd}.log
            12
        

        
            [%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n
            UTF-8
        
    

    
    

    
    
        
        
        
    


根据业务逻辑保存对应日志

  1. 配置
    
    
        true
        
            INFO
            ACCEPT
            DENY
        
        
            ${LOG_HOME}/user/user.log.%d
            12
        
        
            [%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n
            UTF-8
        
    

    
    
        
    
  1. 日志文件名称枚举类
public enum LogFileName {

    // 用户日志信息, 配置到 logback.xml 中 logger name='userLog'
    USER("userLog");

    private String logFileName;

    LogFileName(String logFileName) {
        this.logFileName = logFileName;
    }

    public String getLogFileName() {
        return logFileName;
    }

    public void setLogFileName(String logFileName) {
        this.logFileName = logFileName;
    }

}
  1. 日志工具类
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LoggerUtils {

    public static Logger logger(LogFileName fileName) {
        return LoggerFactory.getLogger(fileName.getLogFileName());
    }
}
  1. 测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class ShareApplicationTests {

    Logger USER = LoggerUtils.logger(LogFileName.USER);

    @Test
    public void testLog() {
        USER.info(" 用户信息");
    }
}
  1. 测试结果
    SpringBoot 集成 Logback 日志按天生产并分类存储_第1张图片

logback 配置日志按天产生日志文件

上面配置采用了基于时间的滚动策略 TimeBasedRollingPolicy , 每天0点自动生成一份新的日志文件, 但里边包含了一段 triggeringPolicy 触发策略, 最大日志文件超过 10MB 自动生成新的日志文件, TimeBasedRollingPolicy 是基于时间的, 不能和其他策略一起使用.

无法按天产生日志文件解决方法

  1. 删除组合策略 triggeringPolicy 配置

    
        INFO
    
    
    
        ${LOG_PATH}/info.log.%d{yyyy-MM-dd}.log
        30
    

    
        %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
    


  1. 使用时间和大小组合策略 SizeAndTimeBasedRollingPolicy

    
        INFO
    
    
    
        ${LOG_PATH}/info.log.%d{yyyy-MM-dd}.%i.log
        30
        20MB
    
    
    
        %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
    

后面的 %i 是单个文件超大小后切割序号

你可能感兴趣的:(spring-boot,logback)