Spring Boot 是由 Pivotal 團隊提供的全新框架,大大簡化了新 Spring 應用的初始搭建以及開發過程。雖然開發過程簡化了,但是日誌這一項還是依然重要。
spring boot 默認使用logback 來打印日誌,即使我們沒有在pom文件裏面添加logback的相關的依賴,我們依然能夠使用logback 來打印日誌。
只要我們引入了起步依賴,我們就可以在dependency裏面看到日誌的相關依賴。
如果我們沒有做相關的配置,那麼日誌打印的時候,日誌格式使用的是默認的格式,很大的概率上是沒法滿足使用要求的:
這個時候我們可以通過使用配置文件的方式來配置日誌格式,使之滿足我們的要求。在spring boot項目中,添加配置文件的方式非常簡單,只需要在resource文件夾下面,添加logback-spring.xml 文件即可:
當然,如果你想給日誌的配置文件起一個符合自己個性的名字或者放在其他的路徑下面,你可以在application.properties 裏面指定配置文件的路徑:
logging.config=classpath:xxx.xml
那麼,配置文件裏面,我們應該填寫哪些內容呢?非常簡單,下面我會給出一個模板並帶有詳細的註釋,只需要按照下面的進行配置,那麼你就可以快速的配置出一個適合自己logback日誌配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- scan="true"開啓對配置信息的自動掃描(默認時間爲60秒掃描一次) 注:當此文件的配置信息發生變化時,此設置的作用就體現出來了,不需要重啓服務 -->
<configuration scan="true">
<!-- 通過property標籤,來存放key-value數據,便於後面的動態獲取,提高程序的靈活性 -->
<property name="log-dir" value="log" />
<property name="log-name" value="logFile" />
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>配置appender(可以配置多個)>>>>>>>>>>>>>>>>>>>>>>>>> -->
<!--
name:自取即可,
class:加載指定類(ch.qos.logback.core.ConsoleAppender類會將日誌輸出到>>>控制檯),
patter:指定輸出的日誌格式,其中%c和%logger都是記錄類的全名稱,實際使用的時候可以刪除一個
-->
<appender name="consoleAppender"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} {%thread} %-5level %logger{36}:[%c][%method][%L]- %msg%n</pattern>
<!-- 日誌編碼 -->
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
</appender>
<!--
name:自取即可,
class:加載指定類(ch.qos.logback.core.rolling.RollingFileAppender類會將日誌輸出到>>>指定的文件中),
patter:指定輸出的日誌格式 file:指定存放日誌的文件(如果無,則自動創建) rollingPolicy:滾動策略>>>每天結束時,都會將該天的日誌存爲指定的格式的文件
FileNamePattern:文件的全路徑名模板 (注:如果最後結尾是gz或者zip等的話,那麼會自動打成相應壓縮包)
-->
<appender name="fileAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 把日誌文件輸出到:項目啓動的目錄下的log文件夾(無則自動創建)下 -->
<file>${log-dir}/${log-name}.log</file>
<!-- 把日誌文件輸出到:name爲logFilePositionDir的property標籤指定的位置下 -->
<!-- <file>${logFilePositionDir}/logFile.log</file> -->
<!-- 把日誌文件輸出到:當前磁盤下的log文件夾(無則自動創建)下 -->
<!-- <file>/log/logFile.log</file> -->
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- TimeBasedRollingPolicy策略會將過時的日誌,另存到指定的文件中(無該文件則創建) -->
<!-- 把因爲 過時 或 過大 而拆分後的文件也保存到目啓動的目錄下的log文件夾下 -->
<fileNamePattern>${log-dir}/${log-name}.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<!-- 設置過時時間(單位:<fileNamePattern>標籤中%d裏最小的時間單位) -->
<!-- 系統會刪除(分離出去了的)過時了的日誌文件 -->
<!-- 本人這裏:保存以最後一次日誌爲準,往前7天以內的日誌文件 -->
<MaxHistory>
7
</MaxHistory>
<!-- 滾動策略可以嵌套;
這裏嵌套了一個SizeAndTimeBasedFNATP策略,
主要目的是: 在每天都會拆分日誌的前提下,
當該天的日誌大於規定大小時,
也進行拆分並以【%i】進行區分,i從0開始
-->
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>5MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!-- 日誌輸出格式 -->
<pattern>%d{HH:mm:ss.SSS} {%thread} %-5level %logger{36}:%L- %msg%n</pattern>
<!-- 日誌編碼 -->
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
</appender>
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>使用appender>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -->
<!--
指定[哪個包]下使用[哪個appender],並設置 記錄到日誌文件中的日誌的最下
級別(低於次級別的日誌信息不會輸出記錄到日誌文件中)
注:日誌級別有: trace|debug|info|warn|error|fatal
注:當有多處指定了要記錄的日誌的最下日誌級別時,走優先級最高的,優先級:
logback-spring.xml中 > 啓動jar包時 > xxx.properties/xxx.yml中
-->
<logger name="cn" level="info">
<!-- 指定使用哪個appender -->
<appender-ref ref="consoleAppender" />
</logger>
<!--
root:logger的根節點,appender-ref:確定使用哪個appender,將日誌信息顯示在console
注:如果不指定配置此項的話,那麼SpringBoot啓動後,將不會在console打印任何信息
-->
<root level="error">
<appender-ref ref="consoleAppender" />
</root>
</configuration>
下面我們試下自己的日誌成果:
首先啓動spring 項目:
然後,在瀏覽器訪問一下:
訪問成功後,查看日誌:
可以看到日誌的線程名、類名、方法名。行數,都被記錄了下來,這對我們後面定位問題會有很大的幫助。