1. 程式人生 > >Spring boot配置logback日誌列印到指定路徑檔案

Spring boot配置logback日誌列印到指定路徑檔案

在實際專案開發中,一般都是使用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外掛。