1. 程式人生 > 其它 >Springboot 整合logback配置

Springboot 整合logback配置

1. 引入依賴

Springboot預設是整合logback日誌的, 樓主用的是2.6.3版本

只要專案中引入了該座標, 則該專案就已經集成了logback日誌框架了

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <version>${springboot.version}</version>
</dependency>

2. yml 配置:

在application.yml配置檔案中新增一下配置, 指定logback的xml配置檔案

spring:
application:
name: sky
profiles:
active: dev
logging:
  config: classpath:logback-spring.xml

3. logback-spring.xml 詳細配置:

主要是配置日誌的輸出格式及滾動策略

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日誌級別從低到高分為TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果設定為WARN,則低於WARN的資訊都不會輸出 
--> <!-- scan:當此屬性設定為true時,配置文件如果發生改變,將會被重新載入,預設值為true --> <!-- scanPeriod:設定監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,預設單位是毫秒。 當scan為true時,此屬性生效。預設的時間間隔為1分鐘。 --> <!-- debug:當此屬性設定為true時,將打印出logback內部日誌資訊,實時檢視logback執行狀態。預設值為false。 --> <configuration scan="false" debug="false"
> <!--以下配置基本不需修改 --> <!--需要使用springProperty,才可使用application.properties(或application.yml)中的值 --> <springProperty name="app.name" source="spring.application.name" /> <!--指定應用日誌的路徑 --> <property name="log.path" value="./logs/${app.name}" /> <!--輸出到控制檯 --> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5p) %magenta([%18.18t]) %cyan([%-50logger{50}]) - %msg%n</pattern> </encoder> </appender> <!--輸出到檔案 --> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在記錄的日誌文件的路徑及文件名 --> <file>${log.path}/${app.name}.log</file> <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${log.path}/${app.name}.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern> <!--單個檔案大小--> <maxFileSize>50MB</maxFileSize> <!--日誌文件保留天數--> <maxHistory>14</maxHistory> <!--指定日誌檔案總的上限大小--> <totalSizeCap>10GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%18.18t] [%-50logger{50}] [%X{TRACE_ID}] - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <!-- 單獨輸出error日誌檔案, 可選配置 --> <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/${app.name}-error.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${log.path}/${app.name}-error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%18.18t] [%-50logger{50}] [%X{TRACE_ID}] - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> </appender> <!-- <logger>用來設定某一個包或者具體的某一個類的日誌列印級別、以及指定<appender>。<logger>僅有一個name屬性,一個可選的level和一個可選的addtivity屬性。 name:用來指定受此logger約束的某一個包或者具體的某一個類。 level:用來設定列印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,還有一個特俗值INHERITED或者同義詞NULL,代表強制執行上級的級別。 如果未設定此屬性,那麼當前logger將會繼承上級的級別。 addtivity:是否向上級logger傳遞列印資訊。預設是true --> <logger name="com.sky.boot.mapper" level="DEBUG" /> <!-- 使用mybatis的時候,sql語句是debug下才會列印,而這裡我們只配置了info,所以想要檢視sql語句的話,有以下兩種操作: 第一種把<root level="info">改成<root level="DEBUG">這樣就會列印sql,不過這樣日誌那邊會出現很多其他訊息 第二種就是單獨給dao下目錄配置debug模式,程式碼如下,這樣配置sql語句會列印,其他還是正常info級別: --> <!-- root節點是必選節點,用來指定最基礎的日誌輸出級別,只有一個level屬性 level:用來設定列印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能設定為INHERITED或者同義詞NULL。 預設是DEBUG 可以包含零個或多個元素,標識這個appender將會新增到這個logger。 --> <!-- 開發環境 --> <springProfile name="dev"> <root level="INFO"> <appender-ref ref="console" /> </root> </springProfile> <!-- 測試環境 --> <springProfile name="test"> <root level="INFO"> <appender-ref ref="file" /> </root> </springProfile> <!-- 生產環境. --> <springProfile name="prod"> <root level="INFO"> <appender-ref ref="file" /> <appender-ref ref="error" /> </root> </springProfile> </configuration>

4. 以上配置完成後, 就可以直接專案中使用了

這裡可以用lombok的@Slf4j註解標識相關實體類, 然後類方法中直接log.xxx使用即可, 支援 debug | info | warn | error