Spring boot配置logback日誌列印到指定路徑檔案
阿新 • • 發佈:2018-12-12
在實際專案開發中,一般都是使用log列印日誌到指定路徑,生成檔案,而平時使用的System.out.pring()只能輸出日誌到控制檯。
當我們把專案打成war包部署到伺服器上,會有不用的使用者使用我們的應用,這個時候如果一個客戶端出現了問題,那我們如果在控制檯去找該使用者丟擲的異常或錯誤資訊,是一件很難受,很麻煩的事情。為了解決這個問題,開發或維護人員能夠迅速定位日誌,我們實際的專案中的日誌都是使用配置引入第三方jar包或者引入外掛,從而將日誌列印到我們制定的路徑的資料夾中,生成 .log 檔案。
這裡的滾動策略是按照時間滾動的,每一天生成一個新的日誌檔案。
下面是檔案logback-spring.xml:
<?xml version="1.0" encoding="UTF-8" ?> <configuration> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern> %d - %msg%n </pattern> </layout> </appender> <appender name="fileInfoLog" 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> %msg%n </pattern> </encoder> <!--滾動策略--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--路徑--> <fileNamePattern>E:\Git\log\info/info.%d.log</fileNamePattern> </rollingPolicy> </appender> <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <encoder> <pattern> %msg%n </pattern> </encoder> <!--滾動策略--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--路徑--> <fileNamePattern>E:\Git\log\error/error.%d.log</fileNamePattern> </rollingPolicy> </appender> <root level="info"> <appender-ref ref="consoleLog" /> <appender-ref ref="fileInfoLog" /> <appender-ref ref="fileErrorLog" /> </root> </configuration>
在pom.xml中新增一下依賴:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
然後看一下測試類LoggerTest.java:
package com.imooc; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import lombok.extern.slf4j.Slf4j; @RunWith(SpringRunner.class) @SpringBootTest @Slf4j public class LoggerTest { // private final Logger logger = LoggerFactory.getLogger(LoggerTest.class); @Test public void test1(){ log.info("info...."); log.debug("debug...."); log.error("error...."); } }
我們在這裡使用了一個外掛lombok,在idea和eclipse中都可以安裝:
我這裡一開始引入依賴之後報錯,是因為沒有配置編輯器的maven:
上面測試類中使用了lombok控制元件支援的一個註解@Slf4j,這個註解可以方便我們dao層的實現,省去了setter和getter方法,同時也方便了日誌的輸出,不用再每一個類中都 建立一個Logger物件,直接呼叫log方法就可以列印日誌了,這個使用起來還是很方便的,我推薦使用這個註解和lombok外掛。