Springboot Logback日志多文件输出

在早期的日志Slf4j+Log4j使用方式中,我们使用最多的就是LoggerFactory来获取一个Logger实例,logback的原理也一样。

目录

配置logback.xml

配置需要的propery属性

配置日志追加方式

配置日志级别

配置日志模板

logback 多日志文件操作

logback完整示例配置

Java日志工具类

系统启动日志示例

示例效果

日志按照级别阈值输出


配置logback.xml

配置需要的propery属性

这部分可以配置到logback.properties 需要开启扫描才行,下面是直接在logback.xml配置

 
    
    
    

配置日志追加方式

配置appender标签包括文件生成规则,内容的输出规则等

  
    
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n
        
    
    
    
        
            ${LOG_HOME}/${LOG_NAME}.%d{yyyy-MM-dd}.log
            30
        
         
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n 
        
        
            100MB
        
    

配置日志级别

注意:日志级别不区分大小写

  
    
        
        
    

配置日志模板

 logger的配置就是LoggerFactory需要的模板,只有配置了工厂获取才会生效。

  
    
        
    
    
        
    
    
        
    
    
        
    
    
        
    

logback 多日志文件操作

logback完整示例配置

根据前面介绍的一个完整配置示例


    
    
    
    
    
    
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n
        
    
    
    
        
            ${LOG_HOME}/${LOG_NAME}.%d{yyyy-MM-dd}.log
            30
        
         
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n 
        
        
            100MB
        
    
    
    

    
    
        
            ${LOG_HOME}/mobile-position-sync.%d{yyyy-MM-dd}.log
            30
        
        
            INFO
            ACCEPT
            DENY
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n 
        
        
            100MB
        
    

    
    
        
            ${LOG_HOME}/mobile-event-sync.%d{yyyy-MM-dd}.log
            30
        
        
            INFO
            ACCEPT
            DENY
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n 
        
        
            100MB
        
    

    
    
        
            ${LOG_HOME}/mobile-track-sync.%d{yyyy-MM-dd}.log
            30
        
        
            INFO
            ACCEPT
            DENY
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n 
        
        
            100MB
        
    

    
    
        
            ${LOG_HOME}/mobile-file-sync.%d{yyyy-MM-dd}.log
            30
        
        
            INFO
            ACCEPT
            DENY
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n 
        
        
            100MB
        
    

    
    
        
            ${LOG_HOME}/mobile-service-restart.%d{yyyy-MM-dd}.log
            30
        
        
            INFO
            ACCEPT
            DENY
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n 
        
        
            100MB
        
    

    
    
        
        
    
    
    
        
    

    
    
        
    
    
        
    
    
        
    
    
        
    
    
        
    

Java日志工具类

日志枚举根据自己项目的需要进行自定义即可。

package com.patrol.beans.util;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @Copyright: 2019-2021
 * @FileName: LoggerUtils.java
 * @Author: PJL
 * @Date: 2020/9/8 10:34
 * @Description: 日志管理工具
 */
public class LoggerUtils {

    /**
     * 打印到指定的文件下
     *
     * @param patrolLoggerType 日志文件类型
     * @return
     */
    public static Logger getLogger(PatrolLoggerType patrolLoggerType) {
        return LoggerFactory.getLogger(patrolLoggerType.getLogFileName());
    }

    /**
     * @Copyright: 2019-2021
     * @FileName: PatrolLoggerType.java
     * @Author: PJL
     * @Date: 2020/9/8 10:10
     * @Description: 巡护日志类型枚举
     */
    public enum PatrolLoggerType {
        /**
         * 重启日志
         */
        RESTART("RESTART_LOG"),
        /**
         * 实时位置
         */
        POSITION("POSITION_LOG"),
        /**
         * 用户事件
         */
        EVENT("EVENT_LOG"),
        /**
         * 用户轨迹
         */
        TRACK("TRACK_LOG"),
        /**
         * 事件附件
         */
        FILE("FILE_LOG");

        private String logFileName;

        PatrolLoggerType(String fileName) {
            this.logFileName = fileName;
        }

        public String getLogFileName() {
            return logFileName;
        }


    }
}

系统启动日志示例

在Application启动类调用日志输出。

package com.patrol.mobile;

import com.patrol.beans.util.LoggerUtils;
import org.slf4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import javax.annotation.PostConstruct;

/**
 * 开启异步请求
 */
@EnableAsync
/**
 * 开启接口缓存
 */
@EnableCaching
/**
 * 开启定时任务调度
 */
@EnableScheduling
/**
 * 开启接口文档描述
 */
@EnableSwagger2
/**
 * @SpringBootApplication
 * 

相当于@Configuration,@EnableAutoConfiguration和 @ComponentScan

*/ @SpringBootApplication public class PatrolMobileServiceApplication { /** * 系统重启日志输出(指定日志文件输出) */ @PostConstruct public void printLog() { Logger logger = LoggerUtils.getLogger(LoggerUtils.PatrolLoggerType.RESTART); logger.info(">>>系统重启!"); } public static void main(String[] args) { SpringApplication.run(PatrolMobileServiceApplication.class, args); } }

示例效果

Springboot Logback日志多文件输出_第1张图片

 

日志按照级别阈值输出

logback配置需要用到filter配置为:ch.qos.logback.classic.filter.ThresholdFilter 


    
    
    
    
    
    
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n
        
    
    
    
        
            ${LOG_HOME}/${LOG_NAME}.%d{yyyy-MM-dd}.log
            30
        
         
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n 
        
        
            100MB
        
    
    
    

    
    
        
            ${LOG_HOME}/mobile-position-sync.%d{yyyy-MM-dd}.log
            30
        
        
        
        
            
            INFO
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n 
        
        
            100MB
        
    

    
    
        
            ${LOG_HOME}/mobile-event-sync.%d{yyyy-MM-dd}.log
            30
        
        
        
        
            
            INFO
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n 
        
        
            100MB
        
    

    
    
        
            ${LOG_HOME}/mobile-track-sync.%d{yyyy-MM-dd}.log
            30
        
        
        
        
            
            INFO
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n 
        
        
            100MB
        
    

    
    
        
            ${LOG_HOME}/mobile-file-sync.%d{yyyy-MM-dd}.log
            30
        
        
        
        
            
            INFO
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n 
        
        
            100MB
        
    

    
    
        
            ${LOG_HOME}/mobile-service-restart.%d{yyyy-MM-dd}.log
            30
        
        
        
        
            
            INFO
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} | %msg%n 
        
        
            100MB
        
    

    
    
        
        
    
    
    
        
    

    
    
        
    
    
        
    
    
        
    
    
        
    
    
        
    

 

你可能感兴趣的:(Springboot Logback日志多文件输出)