1. 程式人生 > 實用技巧 >仵航說 SpringBoot專案配置Log日誌服務-仵老大

仵航說 SpringBoot專案配置Log日誌服務-仵老大

今天領導讓我配置一個log日誌服務,我哪裡見過喲,然後就去百度了,結果挨個試下去,找到了一個能用的,分享給大家
大致四個地方 分別是 1.pom檔案需要引入依賴 2.建立一個TestLog類 3.在yml中或者properties中寫log.xml的路徑 4.新增一個Logback.xnk檔案
首先來個配置完成的圖片

第一步首先先修改pom檔案,讓他下載依賴

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.2.3</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
    <!--log結束-->  

第二步寫個main()函式作為啟動入口,建立resource資料夾存放靜態檔案

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TestLog {
static Logger logger = LoggerFactory.getLogger(TestLog.class);
public static void main(String[] arge) {
logger.debug(" debug");
logger.info(" info");
logger.error(" error");
logger.warn(" warn");
}
}

第三步新增一個application.yml或者application.properrties配置檔案均可,新增以下配置指明logback的配置xml路徑

logging:
config: classpath:logback.xml

第四步新增logback.xml檔案,用於做log的相關配置

<!-- 配置項, 通過此節點配置日誌輸出位置(控制檯、檔案、資料庫)、輸出格式等-->
<!-- ConsoleAppender代表輸出到控制檯 -->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
    <!-- layout代表輸出格式 -->
    <layout class="ch.qos.logback.classic.PatternLayout">
        <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n</pattern>
    </layout>
</appender>
<!-- 日誌輸出檔案 -->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n</pattern>
    </encoder>
    <!-- 滾動記錄檔案,先將日誌記錄到指定檔案,當符合某個條件時,將日誌記錄到其他檔案 RollingFileAppender-->
    <!-- 滾動策略,它根據時間來制定滾動策略.既負責滾動也負責觸發滾動 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- 輸出路徑 -->
        <fileNamePattern>${logPath}/info/%d.log</fileNamePattern>
        <!-- 可選節點,控制保留的歸檔檔案的最大數量,超出數量就刪除舊檔案假設設定每個月滾動,且<maxHistory>是6,
        則只儲存最近6個月的檔案,刪除之前的舊檔案。注意,刪除舊檔案是,那些為了歸檔而建立的目錄也會被刪除-->
        <maxHistory>${maxHistory}</maxHistory>
    </rollingPolicy>
    <!-- 按照固定視窗模式生成日誌檔案,當檔案大於20MB時,生成新的日誌檔案。視窗大小是1到3,當儲存了3個歸檔檔案後,將覆蓋最早的日誌。
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${logPath}/%d{yyyy-MM-dd}/.log.zip</fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>3</maxIndex>
    </rollingPolicy>   -->
    <!-- 檢視當前活動檔案的大小,如果超過指定大小會告知RollingFileAppender 觸發當前活動檔案滾動
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>   -->
</appender>
<!-- 特殊記錄Error日誌 -->
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 只記錄ERROR級別日誌,新增範圍過濾,可以將該型別的日誌特殊記錄到某個位置 -->
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>ERROR</level>
    </filter>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${logPath}/error/%d.log</fileNamePattern>
        <!-- 日誌最大的歷史 60天 -->
        <maxHistory>60</maxHistory>
    </rollingPolicy>
</appender>

<!-- 根節點,表名基本的日誌級別,裡面可以由多個appender規則 -->
<!-- level="info"代表基礎日誌級別為info -->
<root level="info">
    <!-- 引入控制檯輸出規則 -->
    <appender-ref ref="consoleLog" />
    <appender-ref ref="fileInfoLog" />
    <appender-ref ref="fileErrorLog" />
</root>

執行之後就可以看到日誌輸出到控制檯跟檔案中了

發現沒有debug日誌的輸出,因為我們節點規定的記錄的是info級別的,他只會記錄等於或者高於info級別的,其他的都會忽略保證生成環境產生過多日誌,加油打工人