仵航說 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級別的,其他的都會忽略保證生成環境產生過多日誌,加油打工人