logback 配置將IDEA 的 console log 存入到檔案

gongchengship發表於2024-10-10

為了將日誌輸出從 IDEA 的 Console 重定向到檔案,你可以使用 Logback 作為日誌框架,並透過配置檔案來實現這一功能。下面是一個示例 logback.xml 配置檔案,它會將日誌同時輸出到 Console檔案 中。

logback.xml 配置檔案示例

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    
    <!-- 控制日誌檔案儲存路徑和檔名 -->
    <property name="LOG_FILE" value="logs/app.log" />
    <property name="ERROR_LOG_FILE" value="logs/error.log" />

    <!-- 控制檯輸出配置 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 普通日誌檔案輸出配置 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日誌檔案路徑 -->
        <file>${LOG_FILE}</file>
        
        <!-- 檔案滾動策略(按照檔案大小滾動) -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeBasedRollingPolicy">
            <fileNamePattern>logs/app.%i.log</fileNamePattern>
            <!-- 檔案最大尺寸,達到 10MB 後建立新檔案 -->
            <maxFileSize>10MB</maxFileSize>
            <!-- 保留的最大歷史日誌檔案數量 -->
            <maxHistory>5</maxHistory>
        </rollingPolicy>
        
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 錯誤日誌單獨記錄 -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${ERROR_LOG_FILE}</file>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeBasedRollingPolicy">
            <fileNamePattern>logs/error.%i.log</fileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <maxHistory>5</maxHistory>
        </rollingPolicy>
        
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
        
        <!-- 只記錄 ERROR 級別的日誌 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- Root logger 配置:輸出到控制檯和檔案 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
        <appender-ref ref="ERROR_FILE" />
    </root>

</configuration>

配置說明:

  1. Console 輸出:使用 ConsoleAppender,將日誌輸出到 IDEA 的 Console 中。

  2. 日誌檔案輸出:使用 RollingFileAppender,日誌輸出到指定的檔案中,同時設定了滾動策略(即檔案達到一定大小後建立新檔案)。

    • LOG_FILE 是儲存普通日誌的檔案路徑(如 logs/app.log)。
    • ERROR_LOG_FILE 是儲存錯誤級別日誌的檔案路徑(如 logs/error.log)。
    • 滾動策略使用 SizeBasedRollingPolicy,當日志檔案大小超過 10MB 時會滾動建立新的日誌檔案,並保留最近的 5 個日誌檔案。
  3. 日誌格式:日誌格式化器 PatternLayout 使用如下格式輸出:

    • %d{yyyy-MM-dd HH:mm:ss}:日期時間
    • %thread:執行緒名稱
    • %level:日誌級別(INFO、ERROR 等)
    • %logger{36}:日誌記錄器的名稱
    • %msg:日誌訊息
    • %n:換行符
  4. 日誌級別root 記錄器設定為 INFO 級別,輸出到控制檯和檔案。如果想除錯,可以將 level="INFO" 改成 DEBUG 以輸出更多資訊。

logback.xml 檔案整合到專案中:

  1. 在你的 src/main/resources 目錄下建立一個資料夾,命名為 resources,並將此配置檔案命名為 logback.xml,放置到 src/main/resources 目錄下。

  2. 確保你的 pom.xml 或者 build.gradle 檔案中引入了 Logback 依賴。如果沒有的話,新增以下依賴。

Maven 依賴:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version> <!-- 替換為最新版本 -->
</dependency>

Gradle 依賴:

implementation 'ch.qos.logback:logback-classic:1.2.3'  // 替換為最新版本

如何驗證:

  • 執行程式後,日誌將同時輸出到 IDEA 的控制檯和指定的檔案。
  • 普通日誌記錄在 logs/app.log 中,錯誤級別日誌單獨記錄在 logs/error.log 中。

透過這個 logback.xml 配置檔案,你可以讓程式執行時的日誌記錄到指定的檔案,並且同時控制日誌輸出的格式、滾動策略、日誌級別等。

相關文章