本配置選用的是SLF4J+Logback的組合,同時運用了lombok
pom.xml
<!--引用日誌框架LogBack-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
添加logback-spring.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<contextName>logback</contextName>
<appender name="consoleApp" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
</pattern>
</layout>
</appender>
<appender name="fileInfoApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
</pattern>
</encoder>
<!-- 滾動策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 輸出路徑 -->
<fileNamePattern>app_log/log/app.info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="fileErrorApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
</pattern>
</encoder>
<!-- 設置滾動策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 路徑 -->
<fileNamePattern>app_log/log/app.err.%d.log</fileNamePattern>
<!-- 控制保留的歸檔文件的最大數量,超出數量就刪除舊文件,假設設置每個月滾動,
<maxHistory> 是1,則只保存最近1個月的文件,刪除之前的舊文件 -->
<MaxHistory>1</MaxHistory>
</rollingPolicy>
</appender>
<!--注意這個節點要寫在最後 -->
<root level="TRACE">
<appender-ref ref="consoleApp"/>
<appender-ref ref="fileInfoApp"/>
<appender-ref ref="fileErrorApp"/>
</root>
</configuration>
日誌級別如下:
ERROR, WARN, INFO, DEBUG or TRACE
默認是INFO級別,可以寫個測試淚來驗證
編寫測試類
package com.yuan.training.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author haoxin.yuan
* @date 2020/1/11 15:54
*/
@RestController
@Slf4j
public class LogBackTest {
//注意Logger和LoggerFactory類都是org.slf4j包裏的。
@RequestMapping("/log")
public String testLog(){
//測試日誌的級別
log.trace("This is {}","trace");
log.debug("This is {}","debug");
log.info("This is {}","info");
log.warn("This is {}","warn");
log.error("This is {}","error");
return "sussecc";
}
}
測試結果如下: