今天上司讓我配置一個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級别的,其他的都會忽略保證生成環境産生過多日志,加油打勞工