系列文章目录
SpringBoot入門學習(一)创建与发布
SpringBoot入门学习笔记(二)配置文件介绍 及 自动配置原理简介
SpringBoot入门学习笔记(三)日志
文章目录
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/149f7a1b56c97708dc89512d6ec4dde1.png)
每个日志实现框架都有自己的配置文件。使用slf4j后,日志文件还是做成日志实现框架自己本身的配置文件。
如何在系统中使用slf4j
在开发中建议采用日志抽象层+日志实现类的方式。不建议直接调用日志实现类。
1. 导入slf4j与logback依赖
2. 统一日志记录
因为不同的框架采用了不同的日志记录实现。我们需要进行统一。一起使用slf4j进行日志输出。
- 将系统中的其他框架排除出去
- 用中间包来替换原有的日志框架
- 导入slf4j其他的实现
SpringBoot日志关系
SpringBoot中选用slf4j(日志抽象层)和logback(日志实现类)做日志记录。其已经默认的为我们进行了日志转换。
SpringBoot能够适配所有日志,且底层采用slf4j与logback的方式来记录日志,引入其他框架时,需要将该框架的日志框架排除掉。
SpringBoot默认日志配置
测试:
package com.hx.sb03;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Sb03ApplicationTests {
Logger logger = LoggerFactory.getLogger(getClass());
@Test
void contextLoads() {
logger.trace("trace MSG ...");
logger.debug("debug MSG ...");
logger.info("info MSG ...");
logger.warn("warn MSG ...");
logger.error("error MSG ...");
}
}
通过测试可以看到只输出了info之后的日志信息
日志级别
trace < debug < info < warn < error
我们可以调整日志级别,日志就会在该级别之后的级别生效。SpringBoot默认的日志级别为root级别(可输出包括info之后的日志),故上面的测试只能看到info之后的输出。
调整日志级别,编写application.properties
#将日志级别调整为trace级别
logging.level.com.hx=trace
日志路径
#用来指定日志文件名称,生成日志在项目路径根下
logging.file.name=hx.log
#将在项目存放磁盘顶层路径下生成log文件夹下的hx.log日志
#logging.file.name=/log/hx.log
#指定日志文件名,以及绝对路径
#logging.file.name=E:/hx.log
#用来指定日志文件路径,如果配置logging.file.name,则该配置不生效
#配置将日志文件输出在该项目存放磁盘顶层路径下的springLog文件夹中。其日志文件名为spring.log
#logging.file.path=/springLog
日志格式
默认格式
#时间 级别 线程号 线程名 类路径 日志信息
#2020-09-09 16:25:27.639 ERROR 19076 --- [ main] com.hx.sb03.Sb03ApplicationTests : error MSG ...
修改
#控制台日志格式 时间 线程号 -5左对齐 级别 全类名50字符 日志信息 换行
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss:SSS} [%thread] %-5level %logger{50} - %msg%n
#文件日志格式
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss:SSS} [%thread] %-5level %logger{50} - %msg%n
自定义配置文件:
给类路径下,放上每个框架自己的配置文件即可,SpringBoot则不适用原有的配置文件。
logback.xml 直接被日志框架识别,绕开spring。不支持某些特性的配置。
logback-spring.xml 日志框架不直接加载日志的配置项,而是由spring加载。