Spring Boot使用Apache Commons日誌記錄進行所有內部日誌記錄。Spring Boot的默認配置支持使用Java Util Logging,Log4j2和Logback。 使用這些,可以配置控制臺日誌記錄以及檔日誌記錄。
如果使用的是Spring Boot Starters,Logback將為日誌記錄提供良好的支持。 此外,Logback還提供對Common Logging,Util Logging,Log4J和SLF4J的良好支持。
日誌格式
默認的Spring Boot Log格式顯示在下面給出的螢幕截圖中。
它提供以下資訊 -
- 提供日誌日期和時間的日期和時間。
- 日誌級別顯示有:INFO,ERROR或WARN。
- 進程ID。
---
是一個分隔符號。- 線程名稱括在方括號
[]
中。 - 記錄器名稱,顯示源類名稱。
- 日誌消息。
控制臺日誌輸出
默認日誌消息將列印到控制臺窗口。 默認情況下,INFO
,ERROR
和WARN
日誌消息將列印在日誌檔中。
如果必須啟用調試級別日誌,請使用以下命令在啟動應用程式時添加調試標誌 -
java –jar demo.jar --debug
還可以將調試模式添加到application.properties 檔中,如下所示 -
debug = true
檔日誌輸出
默認情況下,所有日誌都將在控制臺窗口中列印,而不是在檔中列印。 如果要在檔中列印日誌,則需要在application.properties 檔中設置屬性logging.file 或logging.path 。
可以使用下麵顯示的屬性指定日誌檔路徑。 請注意,日誌檔案名是spring.log。
logging.path = /var/tmp/
使用下麵顯示的屬性指定自己的日誌檔案名 -
logging.file = /var/tmp/mylog.log
注意 - 檔將在達到
10MB
後自動旋轉生成。
日誌級別
Spring Boot支持所有記錄器級別,例如:TRACE
,DEBUG
,INFO
,WARN
,ERROR
,FATAL
,OFF
。在application.properties 檔中定義Root logger,如下所示 -
logging.level.root = WARN
注 - Logback不支持“FATAL”級別日誌。 它映射到“ERROR”級別日誌。
配置Logback
Logback支持基於XML的配置來處理Spring Boot Log配置。日誌配置詳細資訊在logback.xml
檔中配置。logback.xml
檔應放在classpath
下。
可以使用下麵給出的代碼在Logback.xml
檔中配置ROOT
級別日誌 -
<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
<root level = "INFO">
</root>
</configuration>
在下面給出的Logback.xml
檔中配置控制臺appender
。
<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
<appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender"></appender>
<root level = "INFO">
<appender-ref ref = "STDOUT"/>
</root>
</configuration>
使用下麵給出的代碼在Logback.xml
檔中配置檔appender
。 請注意,需要在檔追加器中指定日誌檔路徑。
<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
<appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
<File>/var/tmp/mylog.log</File>
</appender>
<root level = "INFO">
<appender-ref ref = "FILE"/>
</root>
</configuration>
使用下麵給出的代碼在logback.xml
檔中定義日誌模式。還使用下麵給出的代碼在控制臺或檔日誌附加程式中定義支持的日誌模式集 -
<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
完整的logback.xml檔的代碼如下所示。必須將其放在類路徑中。
<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
<appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
</encoder>
</appender>
<appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
<File>/var/tmp/mylog.log</File>
<encoder>
<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
</encoder>
</appender>
<root level = "INFO">
<appender-ref ref = "FILE"/>
<appender-ref ref = "STDOUT"/>
</root>
</configuration>
下麵給出的代碼顯示了如何在Spring Boot主類檔中添加slf4j logger。
package com.zaixian.demo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);
public static void main(String[] args) {
logger.info("this is a info message");
logger.warn("this is a warn message");
logger.error("this is a error message");
SpringApplication.run(DemoApplication.class, args);
}
}
在控制臺窗口中看到的輸出顯示在此處 -
在此處顯示日誌檔中顯示的輸出 -