一蜻势、日志框架
市場(chǎng)上存在非常多的日志框架叔营。JUL(java.util.logging),JCL(Apache Commons Logging),Log4j望门,Log4j2甫菠,Logback、SLF4j婴谱、jboss-logging等蟹但。 Spring Boot在框架內(nèi)容部使用JCL躯泰,spring-boot-starter-logging采用了 slf4j+logback的形式,Spring Boot也能自動(dòng)適配(jul华糖、log4j2麦向、logback) 并簡(jiǎn)化配置。
左邊選一個(gè)門(mén)面(抽象層)客叉、右邊選一個(gè)來(lái)實(shí)現(xiàn):
日志門(mén)面:SLF4J诵竭;
日志實(shí)現(xiàn):Logback;
SpringBoot:底層是Spring框架十办,Spring框架默認(rèn)是用JCL秀撇;
<font color="red">SpringBoot選用SLF4J和logback;</font>
二向族、SLF4J的使用
-
如何在系統(tǒng)中使用SLF4J
以后開(kāi)發(fā)的時(shí)候呵燕,日志方法的調(diào)用,不應(yīng)該來(lái)直接調(diào)用日志的實(shí)現(xiàn)類(lèi)件相,而是調(diào)用日志抽象層里面的方法再扭。 - 如何在系統(tǒng)中使用SLF4J
給系統(tǒng)里面導(dǎo)入slf4j和logback的實(shí)現(xiàn)jar
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
??????????圖示:
三、遺留問(wèn)題
???????統(tǒng)一日志記錄夜矗,即使是別的框架也和我統(tǒng)一使用SLF4J進(jìn)行輸出泛范。
如何讓系統(tǒng)中所有的日志都統(tǒng)一到SLF4J:
1、將系統(tǒng)中其他日志框架先排除出去紊撕;
2罢荡、用中間包來(lái)替換原有的日志框架
3、我們導(dǎo)入SLF4J其他的實(shí)現(xiàn)
四对扶、Spring Boot日志關(guān)系
SpringBoot使用這個(gè)依賴(lài)完成日志功能:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>2.1.5.RELEASE</version>
<scope>compile</scope>
</dependency>
底層依賴(lài)關(guān)系:
總結(jié):
- SpringBoot底層也是使用slf4j+logback的方式進(jìn)行日志記錄
- SpringBoot也把其他的日志都替換成了slf4j区赵;
- 都是用了中間替換包
- 如果我們要引入其他框架?一定要把這個(gè)框架的默認(rèn)日志依賴(lài)移除掉
五、日志使用
- 使用默認(rèn)配置
```java
package com.crud.springboot;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class Springboot02AutoconfigApplicationTests {
//記錄器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {
//日志的級(jí)別
//由低到高 trace<debug<info<warn<error
//可以調(diào)整輸出日志的界別:日志就只會(huì)在這個(gè)級(jí)別和更高的級(jí)別生效
logger.trace("這是trace日志");
logger.debug("這是debug日志");
//SpringBoot默認(rèn)輸出的是info級(jí)別的日志
logger.info("這是info日志");
logger.warn("這是warn日志");
logger.error("這是error日志");
}
}
```

-
修改默認(rèn)配置
在這里插入圖片描述
在這里插入圖片描述 -
指定日志的配置
給類(lèi)路徑下放上每個(gè)日志框架自己的配置文件即可浪南;SpringBoot就不會(huì)使用默認(rèn)配置
在這里插入圖片描述
如果使用logback-spring.xml:日志框架就不直接加載日志的配置項(xiàng)笼才,由SpringBoot解析日志配置,可以使用SpringBoot的profile功能
在這里插入圖片描述
在這里插入圖片描述