首頁 > 軟體

SpringBoot整合logback的範例程式碼

2022-04-07 22:00:07

Logback簡介

1、logback和log4j是同一個作者,logback可以看作是log4j的升級版

2、logback分為三個模組, logback-core, logback-classic 和logback-access,其中 logback-core是核心,其他兩個模組依賴core,這個logback-classic是log4j的改善版本,並且原生實現了SLF4J門面(具體參考前文:Java中SLF4J紀錄檔框架的實現原理)。模組logback-access可以整合於Servlet容器,比如Tomact和Jetty。

3、你可以基於logback-core自己建立其他的模組。

Logback相比log4j的優勢

比log4j更快,重寫了核心,在一些關鍵路徑上效能提升10倍,記憶體佔用也更少。
經過大量的測試,和log4j測試不在一個量級。
logback-classic是SLF4J的實現,切換其他紀錄檔框架非常方便,
檔案豐富並且不斷更新,支援Groovy風格的組態檔
組態檔自動重新載入,如果更新了組態檔,logback-classic可以自動重新載入。
自動刪除日期較老的紀錄檔檔案,maxHistory屬性,你可以控制已經產生紀錄檔檔案的最大數量。如果設定maxHistory為12,那那些log檔案超過12個月的都會被自動移除。
自動壓縮歸檔的紀錄檔檔案,壓縮檔案是非同步進行,不影響應用。
組態檔可以處理不同的環境開發,測試,生產),這樣一個組態檔就可以適應多個環境。
SiftingAppender(一個非常多功能的Appender) 它可以用來分割紀錄檔檔案根據任何一個給定的執行引數。如,SiftingAppender能夠區別紀錄檔事件跟進使用者的Session,然後每個使用者會有一個紀錄檔檔案。

下面看下SpringBoot整合logback的方法。

spring-boot-starter-web這個包幾乎是使用SpringBoot時必備的,其內部已經依賴了logback的元件,也就是說SpringBoot已經幫你整合了logback。

只需要在resources目錄加上logback.xml檔案,寫入內容如下:

其中路徑、包名稱、保留週期等 根據自己的需要進行修改即可

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 紀錄檔存放路徑 -->
	<property name="log.path" value="./logs" />
    <!-- 紀錄檔輸出格式 -->
	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

	<!-- 控制檯輸出 -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
	</appender>
	
	<!-- 系統紀錄檔輸出 -->
	<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
	    <file>${log.path}/sys-info.log</file>
        <!-- 迴圈政策:基於時間建立紀錄檔檔案 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 紀錄檔檔名格式 -->
			<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 紀錄檔最大的歷史 60天 -->
			<maxHistory>60</maxHistory>
		</rollingPolicy>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 過濾的級別 -->
            <level>INFO</level>
            <!-- 匹配時的操作:接收(記錄) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配時的操作:拒絕(不記錄) -->
            <onMismatch>DENY</onMismatch>
        </filter>
	<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
	    <file>${log.path}/sys-error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
			<!-- 匹配時的操作:接收(記錄) -->
			<!-- 不匹配時的操作:拒絕(不記錄) -->
    </appender>
	<!-- 使用者存取紀錄檔輸出  -->
    <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log.path}/sys-user.log</file>
            <!-- 按天回滾 daily -->
            <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 紀錄檔最大的歷史 60天 -->
            <maxHistory>60</maxHistory>
	<!-- 系統模組紀錄檔級別控制  -->
	<logger name="cn.vantee" level="info" />
	<!-- Spring紀錄檔級別控制  -->
	<logger name="org.springframework" level="warn" />

	<root level="info">
		<appender-ref ref="console" />
	</root>
	<!--系統操作紀錄檔-->
    <root level="info">
        <appender-ref ref="file_info" />
        <appender-ref ref="file_error" />
    </root>
	<!--系統使用者操作紀錄檔-->
    <logger name="sys-user" level="info">
        <appender-ref ref="sys-user"/>
    </logger>
</configuration> 

在yml檔案中加入如下設定:

logging:
  level:
    cn.vantee: debug
    cn.vantee.mapper: trace
  config: classpath:logback.xml

在需要列印紀錄檔的類上加入@Slf4j註解,即可使用log.info()、log.error()、log.debug()...列印紀錄檔。紀錄檔會自動記錄在logback.xml中指定的檔案內

到此這篇關於SpringBoot整合logback的文章就介紹到這了,更多相關SpringBoot整合logback內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com