SpringBoot 使用logback日志配置

前言

  • Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。
  • SpringBoot会默认使用logback作为日志框架。SpringBoot会默认加载classpath:logback.xml或者classpath:logback-spring.xml文件作为日志配置文件。如果两个文件都不存在,logback 用 BasicConfigurator 自动对自己进行配置,这会导致记录输出到控制台。

一、pom.xml文件

因为springboot默认使用logback作为日志框架,所以我们不需要再引入依赖,这里引入lombok是为了方便使用logback,下面会有例子。

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

二、logback配置文件

这里的错误日志单独生成一个文件。具体配置可以参考logback中文手册




    SpringBoot-logback
    
    
    

    
    
        
        
            %date [%thread] %-5level [%logger{50}] %file:%line - %msg%n
            UTF-8
        

        
        
            INFO
        
    

    
    
        
        

        
        
            
            ${log-dir}/${log-name}/info.created_on_%d{yyyy-MM-dd}.part_%i.log
            
            90
            
            
            
                
                2MB
            
        

        
        
            
            ERROR
            
            DENY
            
            ACCEPT
        

        
        
        
        
        
            %date [%thread] %-5level [%logger{50}] %file:%line - %msg%n
            UTF-8 
        
    

    

        
        
        
        
            
            ${log-dir}/${log-name}/error.created_on_%d{yyyy-MM-dd}.part_%i.log
            
            90
            
                
                2MB
            
        

        
        
            Error
        
        
            %date [%thread] %-5level [%logger{50}] %file:%line - %msg%n
            UTF-8 
        
    

    
        
        
        
    

三、Controller类

  • 未使用lombok方式。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class IndexController {

    // logback
    private final static Logger logger = LoggerFactory.getLogger(IndexController.class);

    @RequestMapping("/index")
    public String index() {
        logger.debug("记录debug日志");
        logger.info("访问了index方法");
        logger.error("记录了error错误日志");
        return "index";
    }
}
  • 使用lombok方式。
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class IndexController2 {

    @RequestMapping("/index2")
    public String index2() {
        log.trace("记录trace日志");
        log.debug("记录debug日志");
        log.info("访问了index方法");
        log.warn("记录了warn日志");
        log.error("记录了error错误日志");

        try {
            int i = 0;
            int j = 1 / i;
        } catch (Exception e) {
            log.error("错误异常:", e);
        }
        return "index";
    }
}

四、备注

为了加深理解logback配置,这里放一个搜到的比较好的一个配置,仅供参考。



    
    SpringBootDemo
    
    
    

    
    
        
        ${LOG_PATH}/${APPDIR}/log_error.log
        
        
            
            ${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log
            
            
                2MB
            
        
        
        true
        
        
            ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n
            utf-8
        
        
        
            error
            ACCEPT
            DENY
        
    

    
    
        
        ${LOG_PATH}/${APPDIR}/log_warn.log
        
        
            
            ${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log
            
            
                2MB
            
        
        
        true
        
        
            ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n
            utf-8
        
        
        
            warn
            ACCEPT
            DENY
        
    

    
    
        
        ${LOG_PATH}/${APPDIR}/log_info.log
        
        
            
            ${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log
            
            
                2MB
            
        
        
        true
        
        
            ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n
            utf-8
        
        
        
            info
            ACCEPT
            DENY
        
    

    
        
        
            ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n
            utf-8
        
        
        
            debug
        
    

    
    

    
    
        
        
        

        
        
    

你可能感兴趣的:(SpringBoot 使用logback日志配置)