SpringBoot 篇 - 配置使用Logback进行日志记录

SpringBoot框架内部集成了LogBack日志,默认使用LogBack的base.xml配置内容来输出日志到控制台或文件之中。本文主要介绍如何使用Logback进行日志记录。
1、在controller包下新增log相关类,这里引用的日志包是org.slf4j包下的。
LogController 类:

package com.example.demo.controller;

import com.example.demo.helper.LogHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("log")
public class LogController {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @RequestMapping("writelog")
    public Object writeLog()
    {
        logger.debug("This is a debug message");
        logger.info("This is an info message");
        logger.warn("This is a warn message");
        logger.error("This is an error message");
        new LogHelper().helpMethod();
        return "OK";
    }
}

LogHelper 类:

package com.example.demo.helper;

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

public class LogHelper {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());
    public void helpMethod(){
        logger.debug("This is a debug message");
        logger.info("This is an info message");
        logger.warn("This is a warn message");
        logger.error("This is an error message");
    }
}

这里一定要在pom文件中引入tomcat-embed-jasper相关包,详细请参考:SpringBoot 篇 - 整合jsp
2、在浏览器中输入http://localhost:8080/log/writelog 将会看到以下结果

SpringBoot 篇 - 配置使用Logback进行日志记录_第1张图片
image.png

控制台输出如下:
SpringBoot 篇 - 配置使用Logback进行日志记录_第2张图片
image.png

可以看到来自logback root logger的输出信息。
但是可以注意到debug级别的日志没有记录下来,那是因为Spring Boot为Logback提供了默认的配置文件base.xml,另外Spring Boot 提供了两个输出端的配置文件console-appender.xml和file-appender.xml,base.xml引用了这两个配置文件。
SpringBoot 篇 - 配置使用Logback进行日志记录_第3张图片
image.png

以下是base.xml的内容,可以看到,root logger的日志级别被重写为Info级别,这就是上面例子中debug级别的日志没有打印的原因。



    
    
    
    
    
        
        
    

3、对Logback进行配置
方法一:在application.properties文件中对Logback进行配置

logging.file=log.log
logging.level.com.example.demo.controller = debug
logging.level.com.example.demo.helper = warn

配置记录日志到log.log,com.example.demo.controller日志级别为debug,
com.example.demo.helper中日志级别为warn。看到以下结果,按照配置的日志级别进行记录。


SpringBoot 篇 - 配置使用Logback进行日志记录_第4张图片
image.png

可以看到日志记录到了log.log日志文件中。


SpringBoot 篇 - 配置使用Logback进行日志记录_第5张图片
image.png

方法二:通过额外的文件logback.xml配置Logback
在main/resources下新增 logback.xml文件,在logback.xml配置文件中,添加了控制台输出、文件每天输出、日志文件最大上限、输出的日志都为debug级别,文件内容:



    
    
    
    
    
    
    ${APP_NAME}

    
    
        
            ${ENCODER_PATTERN}
        
    

    
    
        
            ${LOG_HOME}/info.%d{yyyy-MM-dd}.log.gz
            30
        
        
            ${ENCODER_PATTERN}
        
    

    
    
        
            ${LOG_HOME}/error.%d{yyyy-MM-dd}.log.gz
            60
        
        
            ${ENCODER_PATTERN}
        
        
            WARN
        
    

    
        
        
        
        
    

控制台输出结果如下:


SpringBoot 篇 - 配置使用Logback进行日志记录_第6张图片
image.png

因为logback.xml中配置的./logs作为日志的输出根目录,所以LogBack自动在我们的项目根目录下创建名叫做logs的文件夹,并且项目启动时第一次记录日志时会自动创建根据我们的命名方式的文件。


SpringBoot 篇 - 配置使用Logback进行日志记录_第7张图片
image.png

4、屏蔽某个包下的日志输出
项目中需要屏蔽某个或者多个包下不输出日志也不记录日志到文件内,可以修改application.properties文件添加对应配置:

logging.level.com.example.demo.controller = off

重启运行,控制台输出如下,可以看到屏蔽了com.example.demo.controller 包下的日志打印。


SpringBoot 篇 - 配置使用Logback进行日志记录_第8张图片
image.png

你可能感兴趣的:(SpringBoot 篇 - 配置使用Logback进行日志记录)