首先我們是需要在Springboot當中去使用Logback,在Springboot當中使用非常的簡單,我們只需要將logback.xml配置文件放到項目當中的resources目錄下即可,入下圖所示:
###

###
這樣就相當于啟用了logback日志管理了
###
接下來我們重點講解一下logback.xml當中的各種配置信息都是什么意思
###
```
<?xml version="1.0" encoding="UTF-8"?>
<!-- 對xml的一個掃描是否更新 -->
<!-- 對xml是否進行掃描scan="true"就表示進行掃描 并且是每60s進行掃描一次 debug=false表示不記錄logback本身的日志信息 胡軍 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- property表示定義全局變量 胡軍 -->
<!-- 表示定義日志的輸出路徑 這里我們設置為了/Users/leasure/project-logs目錄下 胡軍-->
<property name="LOG_PATH" value="/Users/leasure/project-logs"/>
<!-- 這里我們也可以這么設置日志的存放路徑 就會在項目的根目錄下創建logs等目錄來存放日志文件 胡軍 -->
<!-- <property name="LOG_PATH" value="${catalina.base}/logs/loggerDemoProject"/>-->
<!-- 設置日志的級別 開發環境一般配置debug即可 還有其他的比如info error ... -->
<property name="LOG_LEVEL" value="debug"/>
<!-- 設置日志保存的時長 這里的30表示的是30天 -->
<property name="LOG_MAX_HISTORY" value="30"/>
<!-- 設置單個日志保存的大小 -->
<property name="LOG_MAX_FILE_SIZE" value="1MB"/>
<!-- 設置整體日志保存的大小 如果超過了就會去刪除最早的打包好的日志 -->
<property name="TOTAL_SIZE_CAP" value="2MB"/>
<!-- 日志所打印出來的格式 [DemoProject] 可以理解為項目名稱 %d{yyyy-MM-dd HH:mm:ss.SSS}表示日期 [%-10thread]線程名稱 %-5level日志的級別 %logger{50}日志長度 %msg%n日志信息和換行符 -->
<property name="LOG_PATTERN"
value="[DemoProject] %d{yyyy-MM-dd HH:mm:ss.SSS} [%-10thread] %-5level | %logger{50} : %msg%n"/>
<!-- appender可以理解為日志輸出的一個機制 比如info日志的輸出機制 error日志的輸出機制 等等 -->
<!-- CONSOLE -->
<appender name="consoleOutput" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>UTF-8</charset>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- DEBUG -->
<!-- debugOutput2File表示的是一個自定義的名字 class="ch.qos.logback.core.rolling.RollingFileAppender" 表示以追加的形式記錄日志-->
<appender name="debugOutput2File" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 表示的是我們記錄日志到什么位置 比如選擇了用上面定義好的LOG_PATH目錄下的debug.log文件里面來記錄日志 -->
<file>${LOG_PATH}/debug.log</file>
<!-- 定義追加策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 當滿足maxHistory 和 maxFileSize 這兩個條件的時候 會觸發文件打包機制 意思就是將在LOG_PATh目錄下創建debug目錄并將里面的debug.log文件打包成日志格式的.tar.gz格式的壓縮包 -->
<fileNamePattern>${LOG_PATH}/debug/debug.log.%d{yyyy-MM-dd}.%i.log.tar.gz</fileNamePattern>
<!-- 表示所有的日志只保存的天數 這里我們設置的是30天 -->
<maxHistory>${LOG_MAX_HISTORY}</maxHistory>
<!-- 單個文件的大小 -->
<maxFileSize>${LOG_MAX_FILE_SIZE}</maxFileSize>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<!-- 日志輸出的格式采用上面我們定義好的LOG_PATTERN的格式 -->
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 表示只接收debug模式的日志級別的日志信息 其他的將會被拒絕 -->
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 底下的INFO和ERROR的配置和上面DEBUG的配置是一樣的 就不再多講了 -->
<!-- INFO -->
<appender name="infoOutput2File" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/info/info.log.%d{yyyy-MM-dd}.%i.log.tar.gz</fileNamePattern>
<maxHistory>${LOG_MAX_HISTORY}</maxHistory>
<maxFileSize>${LOG_MAX_FILE_SIZE}</maxFileSize>
<!-- 比debug模式多了這個配置 稍后解釋 -->
<totalSizeCap>${TOTAL_SIZE_CAP}</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- ERROR -->
<appender name="errorOutput2File" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/error/error.log.%d{yyyy-MM-dd}.%i.log.tar.gz</fileNamePattern>
<maxHistory>${LOG_MAX_HISTORY}</maxHistory>
<maxFileSize>${LOG_MAX_FILE_SIZE}</maxFileSize>
<totalSizeCap>${TOTAL_SIZE_CAP}</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 這里我們設置的日志級別是debug 意味著根Logger會記錄所有級別的日志消息,
包括DEBUG、INFO、WARN、ERROR等。如果沒有這個配置,根Logger的默認級別可能
是INFO或者其他較高級別,那么低于該級別的日志消息將不會被記錄在這個特定的配置中,
由于根Logger的級別被設置為DEBUG,所以所有級別的日志消息都會被記錄,并且通過各
個appender進行輸出。這樣可以更靈活地控制日志輸出,根據實際需要記錄不同級別的日
志信息。 -->
<!-- 如果我設置了level=error 那么info級別的日志就不會被記錄到info級別的日志文件當中了吧?
是的,如果你將 <root level="error">,表示根Logger的級別被設置為ERROR,那么只有ERROR級
別的日志消息及以上級別(如ERROR、WARN)才會被記錄。INFO級別的日志消息將被忽略,不會被記錄到
相應的INFO級別的日志文件中。這樣可以控制日志的詳細程度,只記錄重要的錯誤信息,減少不必要的日
志輸出。 -->
<root level="debug">
<appender-ref ref="debugOutput2File"/>
<appender-ref ref="infoOutput2File"/>
<appender-ref ref="errorOutput2File"/>
<appender-ref ref="consoleOutput"/>
</root>
</configuration>
```
###
重點還是去看里面的代碼的注釋信息
###
講解的已經非常清晰了
###