【Java】【SpringBoot】logback開發環境配置

陆陆无为而治者發表於2024-10-28

image

LogBack開發環境配置

Logback是一個開源的日誌記錄庫,它是log4j的一個改進版本 。Logback被設計為易於使用,同時提供強大的日誌管理功能。

1.新增依賴

在pom.xml檔案中新增依賴:

<dependency>
	<groupId>ch.qos.logback</groupId>
	<artifactId>logback-classic</artifactId>
	<version>1.2.1</version>
</dependency>

2.建立Logback配置檔案

在你的資源目錄(通常是src/main/resources)中建立一個名為logback.xml的檔案。這個檔案將包含你的日誌配置。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
        <root level="info">
            <appender-ref ref="STDOUT" />
        </root>
</configuration>

3.使用logback記錄日誌

在你的Java程式碼中,你可以透過匯入logback的Logger類來記錄日誌。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@SpringBootTest
public class LogbackTest {
    private static final Logger log = LoggerFactory.getLogger(LogbackTest.class);

    /**
     * 測試log4J的使用
     * @author lyj
     * @date 2024-10-28
     */
    @Test
    public void test(){
        log.error("hello, Logback!");
    }
}

4.執行你的應用程式

image

logback高階特性

1. 配置多個Appender

你可以配置多個Appender,以便將日誌輸出到不同的目的地,比如控制檯、檔案、遠端伺服器等。 這裡配置的檔案路徑為,當前專案的logs資料夾下。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 日誌存放路徑 -->
    <property name="log_path" value="./logs" />

    <!--  輸出到控制檯-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <!--輸出到檔案-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log_path}/logFile.log</file>
        <encoder>
            <pattern>${log_path}/%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log_path}/logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
    </appender>
    <root level="info">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

開啟logs日誌。可以看到輸出已經寫logFile.log檔案下:

image

2. 日誌級別的控制

Logback支援TRACE, DEBUG, INFO, WARN, ERROR和FATAL等日誌級別。你可以在配置檔案中為不同的Logger設定不同的日誌級別,以便控制日誌的詳細程度。

<root level="info">
        <appender-ref ref="STDOUT" />
    </root>
    <root level="DEBUG">
        <appender-ref ref="FILE"></appender-ref>
    </root>

3. 非同步日誌記錄

對於需要高效能日誌記錄的應用程式,Logback提供了非同步Appender。使用非同步Appender可以減少日誌記錄對應用程式效能的影響。

 <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
	<queueSize>512</queueSize>
	<discardingThreshold>0</discardingThreshold>
	<appender-ref ref="STDOUT" />
</appender>
 <root level="info">
	<appender-ref ref="file_info" />
	<appender-ref ref="file_error" />
</root>

在這個例子中,所有的日誌都會先被髮送到非同步Appender的佇列中,然後由一個單獨的執行緒從佇列中取出並處理(即傳送到控制檯)。

4. 日誌格式的自定義

Logback允許你自定義日誌訊息的格式,以滿足特定的格式化需求。你可以透過修改encoder部分的pattern屬性來實現這一點。例如,如果你希望在日誌中包含執行緒名稱和類名,你可以這樣配置:

<encoder>
	<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>

5. 日誌檔案的壓縮和清理

隨著時間的推移,日誌檔案會不斷增長,可能會佔用大量的磁碟空間。Logback的TimeBasedRollingPolicy已經提供了一種按日期分割日誌檔案的機制,但你還可以進一步配置日誌檔案的壓縮和清理策略。

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
	<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
	<maxHistory>30</maxHistory> <!-- 保留最近30天的日誌檔案 -->
	<totalSizeCap>3GB</totalSizeCap> <!-- 最多保留3GB的日誌資料 -->
</rollingPolicy>

在這個配置中,maxHistory屬性指定了保留日誌檔案的最大天數,而totalSizeCap屬性則限制了日誌檔案的總大小。一旦達到這些限制,舊的日誌檔案將被自動刪除或壓縮,從而幫助你管理磁碟空間。

6. 日誌的歸檔

有時候,你可能希望將日誌檔案歸檔到一個單獨的目錄中,以便於備份和管理。你可以透過配置rollingPolicy來實現這一點:

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
	<fileNamePattern>/var/log/myapp/archive/logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
	<maxHistory>30</maxHistory>
</rollingPolicy>

在這個例子中,日誌檔案將被歸檔到/var/log/myapp/archive/目錄下。你可以根據實際需要調整歸檔路徑。
透過這些高階配置,你可以進一步最佳化Logback的使用,以滿足複雜和特定的日誌記錄需求。靈活地運用這些技巧,可以幫助你更好地管理和分析應用程式的日誌資料。

相關文章