Spring Boot與日誌
Spring Boot與日誌
一. 日誌框架
市面上的日誌框架: JUL, JCL, Jboss-logging, logback, log4j, log4j2, slf4j …
日誌門面 | 日誌實現 |
---|---|
JCL (jakarta Commons Logging), SLF4j (Simple Logging Facade For Java), Jboss-logging | Log4j , JUL (java.util.logging), Log4j2 , Logback |
左邊選一個門面(抽象層), 右邊選一個實現;
Spring框架預設選擇:JCL
和 commmons-logging
SpringBoot預設選用:SLF4J
和logback
二. SLF4j使用
1. 如何在系統中使用SLF4j
在開發的時候, 日誌記錄方法的呼叫, 不應該來直接呼叫日誌的實現類, 而是呼叫日誌抽象層裡面的方法;
給系統匯入slf4j
的jar
包 和 logback
的實現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");
}
}
呼叫層級關係:
每一個日誌的實現框架都有自己的配置檔案, 使用slf4j
以後, 配置檔案還是做成日誌實現框架的配置檔案.
2. 統一日誌框架
A系統(slf4j
+ logback
) : Spring(commons-logging
) + Hibernate(jboss-logging
) + MyBatis
解決同一日誌記錄, 即是別的框架和系統一起同一使用slf4j
進行輸出
解決方案:
-
將系統中其它日誌框架先排除
-
使用中間包來替換原有的日誌框架
-
匯入
slf4j
其它的實現
三. SpringBoot日誌關係
SpringBoot使用spring-boot-starter-logging
來做日誌功能
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
底層依賴關係:
總結:
- SpringBoot底層也是使用
slf4j
+logback
的方式進行日誌記錄 - SpringBoot也把其它的日誌都替換成立
slf4j
- 中間的替換包內部使用
slf4j
的實現 - 當引用了其它框架, 一定要把這個框架的預設日誌依賴移除掉
四. 日誌使用
1. 預設配置
SpringBoot預設幫我們配置好了日誌
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class LoggingApplicationTests {
//獲取日誌記錄器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
void contextLoads() {
//日誌級別
logger.trace( "這是trace(跟蹤)日誌...");
logger.debug("這是debug(除錯)日誌...");
//SpringBoot預設給我們使用的是info級別
logger.info("這是info(普通)日誌...");
logger.warn("這是warn(警告)日誌...");
logger.error("這是error(錯誤)日誌...");
}
}
SpringBoot預設只顯示info
級別或以上的日誌資訊, 可以通過修改配置檔案的引數設定顯示日誌的級別
logging.level
包名 = 級別, 預設級別為root
logging.level.com.study=trace
同時SpringBoot預設只在控制檯中輸出日誌資訊, 如果想儲存檔案需要設定日誌路徑和檔名
# 指定日誌檔案路徑和檔名
logging.file.path=/spring/log
logging.file.name=springboot.log
即在linux
的根目錄下/spring/log
下的springboot.log
檔案
可以通過配置指定日誌輸出的格式
# 在控制檯輸出的日誌格式
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
2. 指定配置
給類路徑下放上每個日誌框架自己的配置檔案即可, SpringBoot就不再使用其預設配置
Logging System | Customization |
---|---|
Logback | logback-spring.xml , logback-spring.groovy , logback.xml , logback.groovy |
Log4j2 | log4j2-spring.xml , log4j2.xml |
JDK(Java.Util.Logging) | logging.properties |
相關文章
- Spring Boot日誌使用Spring Boot
- Spring Boot日誌配置Spring Boot
- Spring Boot 整合 Logback 日誌Spring Boot
- Spring Boot logback日誌配置Spring Boot
- Spring Boot中使用Loki日誌Spring BootLoki
- Spring Boot日誌框架實踐Spring Boot框架
- Spring Boot日誌的使用和配置Spring Boot
- Spring Boot 揭祕與實戰(三) 日誌框架篇 – 如何快速整合日誌系統Spring Boot框架
- ELK 處理 Spring Boot 日誌,不錯!Spring Boot
- Spring Boot--日誌框架的學習Spring Boot框架
- Spring boot日誌---slf4j+logbackSpring Boot
- Spring boot學習(六)Spring boot實現AOP記錄操作日誌Spring Boot
- Spring Boot 學習筆記(5):日誌配置Spring Boot筆記
- Spring Boot 2 中的預設日誌管理與 Logback 配置詳解Spring Boot
- Spring Boot 3.4 正式釋出,結構化日誌!Spring Boot
- 如何訪問Docker容器中的Spring Boot日誌DockerSpring Boot
- spring-boot-route(十七)使用aop記錄操作日誌Springboot
- Spring Boot 入門(五):整合 AOP 進行日誌管理Spring Boot
- Spring Boot(十)Logback和Log4j2整合與日誌發展史Spring Boot
- spring-boot-route(十六)使用logback生產日誌檔案Springboot
- 使用XLog、Spring-Boot、And-Design-Pro搭建日誌系統Springboot
- Spring Boot 2.x基礎教程:使用tinylog記錄日誌Spring Boot
- 【Spring】日誌列印sql,日誌配置列印sqlSpringSQL
- Spring Boot mybatis-config 和 log4j 輸出sql 日誌Spring BootMyBatisSQL
- Spring Boot 2 中如何使用 Log4j2 記錄日誌Spring Boot
- Spring Boot 日誌各種使用姿勢,是時候捋清楚了!Spring Boot
- Spring Boot 第三彈,一文帶你瞭解日誌如何配置?Spring Boot
- Spring Boot利用AOP獲取使用者操作實現日誌記錄Spring Boot
- Spring Boot動態修改日誌級別Spring Boot
- 利用Spring Boot實現微服務的API閘道器統一日誌Spring Boot微服務API
- 在 Java Spring Boot 專案中使用結構化日誌節省時間JavaSpring Boot
- OCP開源專案:日誌公共元件的實現(log-spring-boot-starter)元件Springboot
- ElasticSearch與Spring Boot整合ElasticsearchSpring Boot
- Spring Boot學習之---Spring Boot與檢索 下(十六)Spring Boot
- Spring Boot AOP 掃盲,實現介面訪問的統一日誌記錄Spring Boot
- 在 Spring Boot中實現包含上下文資訊的JSON日誌? - zachelrathSpring BootJSON
- Spring Boot第四彈,一文教你如何無感知切換日誌框架?Spring Boot框架
- Spring Boot從入門到實戰:整合AOPLog來記錄介面訪問日誌Spring Boot