1.簡述
Logback是log4j框架的作者開發的新一代日志框架,它效率更高、能夠適應諸多的運行環境,同時天然支持SLF4J。
默認情況下,SpringBoot會用Logback來記錄日志,並用INFO級別輸出到控制台。在運行應用程序和其他例子時,你應該已經看到很多INFO級別的日志了。
日志輸出內容元素具體如下:
- 時間日期:精確到毫秒。
- 日志級別:ERROR, WARN, INFO, DEBUG or TRACE。
- 進程ID
- 分隔符:
---
標識實際日志的開始。 - 線程名:方括號括起來(可能會截斷控制台輸出)。
- Logger名:通常使用源代碼的類名。
- 日志內容
2.logback日志配置說明
(1)添加Logback依賴
如果要使用Logback,原則上是需要添加spring-boot-starter-logging依賴的,不加入也可以,因為spring-boot-starter-web依賴中包含了spring-boot-starter-logging依賴。

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency>
(2)配置application.[yml、properties]文件
如果無需復雜的日志配置,執行簡單設置日志打印級別,打印方式可直接再application.[yml、properties]中配置。
application.[yml、properties]配置示例如下:

logging:
file:
##該屬性用來配置日志文件的路徑
path: log
##root日志輸出級別
level:
root: INFO
(3)自定義日志配置
雖然SpringBoot是要消滅xml的,但是有些復雜功能還是得編寫 xml。使用xml后要將application.[yml、properties]中的配置去掉,避免沖突。
根據不同的日志系統,按照指定的規則組織配置文件名,並放在resources目錄下,就能自動被SpringBoot加載:
- Logback:logback-spring.xml、logback-spring.groovy、logback.xml、logback.groovy。
- Log4j:log4j-spring.properties、log4j-spring.xml、log4j.properties、log4j.xml。
- Log4j2:log4j2-spring.xml、log4j2.xml。
- JDK (Java Util Logging):logging.properties。
resources文件夾下創建logging-config.xml文件,文件內容如下:

<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--設置存儲路徑變量--> <property name="LOG_HOME" value="./log"/> <!--控制台輸出appender--> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <!--設置輸出格式--> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <!--設置編碼--> <charset>UTF-8</charset> </encoder> </appender> <!--文件輸出,時間窗口滾動--> <appender name="timeFileOutput" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--日志名,指定最新的文件名,其他文件名使用FileNamePattern --> <File>${LOG_HOME}/timeFile/out.log</File> <!--文件滾動模式--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件輸出的文件名,可設置文件類型為gz,開啟文件壓縮--> <FileNamePattern>${LOG_HOME}/timeFile/info.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <!--日志文件保留天數--> <MaxHistory>30</MaxHistory> <!--按大小分割同一天的--> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <!--輸出格式--> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <!--設置編碼--> <charset>UTF-8</charset> </encoder> </appender> <!--指定基礎的日志輸出級別--> <root level="INFO"> <!--appender將會添加到這個loger--> <appender-ref ref="console"/> <appender-ref ref="timeFileOutput"/> </root> </configuration>
自定義文件名的需要在application.[yml、properties]文件中指定配置文件名,示例如下:

logging:
config: classpath:logging-config.xml