springboot的日志框架

目前流行的日志框架:logback、log4j、slf4j

从springboot的底层框架spring-boot-starter-logging,可以看出,它依赖了3个框架分别为:slf4j、log4j、logback

一、分析slf4j、log4j、logback的区别:

1.logback、log4j:是日志实现框架,就是实现怎么记录日志的

2.slf4j:提供了java中所有的日志框架的简单抽象(日志的门面设计模式),说白了就是一个日志API,它不能单独使用。

所以必须结合logback或者log4j日志框架来实现

二、springboot的日志搭配

springboot2.0默认采用slf4j+logback的日志搭配

在开发过程中,都是采用了slf4j的api去记录日志,底层的实现就是根据配置logback或者log4j日志框架。

实例:

@RestController
public class TestController {

    private static final Logger logger = LoggerFactory.getLogger(TestController.class);

    @GetMapping("log")
    public void log(){
        logger.trace("--------trace--------");
        logger.debug("--------debug--------");
        logger.info("--------info--------");
        logger.warn("--------warn--------");
        logger.error("--------error--------");

    }


}

运行后,日志只显示info、warn、error

三、为什么控制台的日志只输出了info、warn、error?

因为springboot默认是info级别的

properties配置:

指定包目录下的日志级别

logging.level.com.example.demo=trace

四、配置日志的生成存储路径和日志名称

在实际的开发中,不可能一直看着控制台,而且日志会非常大,瞬间就丢失。所以,我们要把日志存储在指定的目录下.

properties配置:

以下配置的效果为:项目根目录下/output/logs/spring.log,默认的日志名为spring.log

logging.path=output/logs

如果不想要把日志放在logging.path默认的根目录下,那就采用自定义的目录和文件名(和项目同级别目录)

logging.file=/data/logs/springboot.log

五、配置日志的内容格式

#%d-时间格式、%thread-线程、%-5level-从左5字符宽度、%logger{50}-日志50个字符、%msg-信息、%n-换行
#设置在控制台输出的日志格式
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} -%msg%n
#设置输出到文件的日志格式
logging.pattern.file=%d{yyyy/mm/dd} === [%thread] == %-5level == %logger{50} == %msg%n

 

posted @ 2020-03-05 15:22  青青子衿啊  阅读(867)  评论(0)    收藏  举报