Spring Boot快速入門之(十):日志
【注】本文譯自:? https://www.tutorialspoint.com/spring_boot/spring_boot_logging.htm

? ??Spring Boot 使用 Apache Commons logging 作為內(nèi)部日志。Spring Boot 缺省配置提供對(duì)于 Java Util Logging, Log4j2 和 Logback 的支持。這樣,我們可以配置控制臺(tái)或者文件日志。
? ? 如果使用?Spring Boot 啟動(dòng)器,Logback 會(huì)提供很好的日志支持。此外,Logback 對(duì) Common Logging、Util Logging、Log4J 和 SLF4J 的支持也不錯(cuò)。
Log 格式
? ??缺省 Spring Boot 的日志格式如下圖所示:

? ? 提供了以下信息:
Date?和?Time?給出日志的日期和時(shí)間
Log level?顯示 INFO, ERROR 或 WARN
Process ID
用 --- 作為分隔符
Thread name?在?方括號(hào) [] 內(nèi)
Logger Name?顯示源類名
日志消息
控制臺(tái)日志輸出
? ? 默認(rèn)日志消息會(huì)打印到控制臺(tái)窗口。缺少情況下,“INFO”, “ERROR” 和 “WARN” 日志消息會(huì)在日志文件中打印。
? ? 如果要允許?debug 級(jí)別的日志,用命令行啟動(dòng)應(yīng)用時(shí)加上 debug 標(biāo)識(shí),如下所示:
java –jar demo.jar --debug
? ? 也可以在?application.properties 中加入調(diào)試模式,如下所示:
debug = true
文件日志輸出
? ? 默認(rèn)情況下,所有的日志都會(huì)不打印到控制臺(tái)窗口而不是在文件中。如果你要將日志打印到文件中,需要在?application.properties 文件中設(shè)置?logging.file?或?logging.path?屬性。
? ? 可以如下所示設(shè)置日志文件路徑,注意日志文件名為?spring.log。
logging.path = /var/tmp/
? ? 你也可以設(shè)置自己的日志文件名,如下所示:
logging.file = /var/tmp/mylog.log
注意:文件在達(dá)到?10 MB 時(shí)將自動(dòng)轉(zhuǎn)儲(chǔ)。
日志級(jí)別
? ??Spring Boot 支持所有的日志級(jí)別,如 “TRACE”, “DEBUG”, “INFO”, “WARN”, “ERROR”, “FATAL”, “OFF”。可以在?application.properties 文件中定義根日志,如下所示:
logging.level.root = WARN
注意:?Logback 不支持 “FATAL” 級(jí)別的日志,它會(huì)被映射為 “ERROR” 級(jí)別的日志。
配置 Logback
? ??Logback 支持基于 XML 的配置來處理 Spring Boot 日志配置。日志配置細(xì)節(jié)在?logback.xml?配置文件中。logback.xml 文件應(yīng)當(dāng)位于 classpath 路徑下。
? ? 可以在?Logback.xml 文件中配置根級(jí)別日志,如下所示:
<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
???<root level = "INFO">
???</root>
</configuration>
? ? 可以在?Logback.xml 文件中配置 控制臺(tái) 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,如下所示。注意需要在 file 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?文件中定義日志范式,也可以定義在控制臺(tái)或者文件中的日志范式集,如下所示:
<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
? ? 完整的?logback.xml 文件如下,需要放在 class path 路徑下:
<?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>
? ? 下面的代碼展示了如何在主類文件中加上?slf4j logger:
package com.tutorialspoint.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);
???}
}
? ? 控制臺(tái)窗口輸出如下所示:

? ? 日志文件輸出如下所示:
