SpringBoot(三) SpringBoot中的日誌配置
SLF4J
Spring Boot在所有內部日誌中使用 ofollow,noindex" target="_blank">Commons Logging ,但是預設配置也提供了對常用日誌的支援,如: Java Util Logging , Log4J , Log4J2 和 Logback 。每種Logger都可以通過配置使用控制檯或者檔案輸出日誌內容。
slf4j.org/" rel="nofollow,noindex" target="_blank">SLF4J ——Simple Logging Facade For Java ,它是一個針對於各類Java日誌框架的統一 Facade 抽象。Java日誌框架眾多——常用的有 java.util.logging
, log4j
, logback
, commons-logging
, Spring框架使用的是Jakarta Commons Logging API (JCL)。而SLF4J定義了統一的日誌抽象介面,而真正的日誌實現則是在執行時決定的——它提供了各類日誌框架的binding。
Logback 是log4j框架的作者開發的新一代日誌框架,它效率更高、能夠適應諸多的執行環境,同時天然支援SLF4J。
預設情況下,Spring Boot會用Logback來記錄日誌,並用INFO級別輸出到控制檯。在執行應用程式和其他例子時,啟動專案輸出的日誌檔案就是。
日誌輸出內容元素具體如下:
---
日誌框架的使用
1.預設配置
Spring Boot為我們提供了很多預設的日誌配置,所以,只要將spring-boot-starter-logging作為依賴加入到當前應用中即可。
2.控制檯輸出順序
日誌級別從低到高分為TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果設定為WARN,則低於WARN的資訊都不會輸出。
Spring Boot中預設配置 ERROR
、 WARN
和 INFO
級別的日誌輸出到控制檯。還可以通過啟動您的應用程式–debug標誌來啟用。
1 @Slf4j 2 @SpringBootApplication 3 public class Test01Application { 4 5 6public void index(){ 7 8//日誌的級別; 9//由低到高trace<debug<info<warn<error 10//可以調整輸出的日誌級別;日誌就只會在這個級別以以後的高級別生效 11//SpringBoot預設給我們使用的是info級別的,沒有指定級別的就用SpringBoot預設規定的級別;root級別 12log.trace(""); 13log.debug("測試資訊"); 14log.info("普通訊息"); 15log.warn("警告進行"); 16log.error("錯誤資訊"); 17 18} 19 20 21public static void main(String[] args) { 22SpringApplication.run(Test01Application.class, args); 23} 24 }
3.級別控制
所有支援的日誌記錄系統都可以在Spring環境中設定記錄級別(在application.properties中)
格式為:’logging.level.* = LEVEL’
-
logging.level
:日誌級別控制字首,*
為包名或Logger名 -
LEVEL
:選項TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
如果想要在修改日誌級別,可以直接在配置檔案中設定。
logging.level.com.test=trace #logging.path= # 不指定路徑在當前專案下生成springboot.log日誌 # 可以指定完整的路徑; #logging.file=G:/springboot.log # 在當前磁碟的根路徑下建立spring資料夾和裡面的log資料夾;使用 spring.log 作為預設檔案 logging.path=/spring/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
日誌輸出格式: %d表示日期時間, %thread表示執行緒名, %-5level:級別從左顯示5個字元寬度 %logger{50} 表示logger名字最長50個字元,否則按照句點分割。 %msg:日誌訊息, %n是換行符 --> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
4.切換日誌框架
slf4j+log4j的方式:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <artifactId>logback-classic</artifactId> <groupId>ch.qos.logback</groupId> </exclusion> <exclusion> <artifactId>log4j-over-slf4j</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </dependency>
切換為log4j2
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <artifactId>spring-boot-starter-logging</artifactId> <groupId>org.springframework.boot</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>