為了將日誌輸出從 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>
配置說明:
-
Console 輸出:使用
ConsoleAppender
,將日誌輸出到 IDEA 的 Console 中。 -
日誌檔案輸出:使用
RollingFileAppender
,日誌輸出到指定的檔案中,同時設定了滾動策略(即檔案達到一定大小後建立新檔案)。LOG_FILE
是儲存普通日誌的檔案路徑(如logs/app.log
)。ERROR_LOG_FILE
是儲存錯誤級別日誌的檔案路徑(如logs/error.log
)。- 滾動策略使用
SizeBasedRollingPolicy
,當日志檔案大小超過 10MB 時會滾動建立新的日誌檔案,並保留最近的 5 個日誌檔案。
-
日誌格式:日誌格式化器
PatternLayout
使用如下格式輸出:%d{yyyy-MM-dd HH:mm:ss}
:日期時間%thread
:執行緒名稱%level
:日誌級別(INFO、ERROR 等)%logger{36}
:日誌記錄器的名稱%msg
:日誌訊息%n
:換行符
-
日誌級別:
root
記錄器設定為INFO
級別,輸出到控制檯和檔案。如果想除錯,可以將level="INFO"
改成DEBUG
以輸出更多資訊。
將 logback.xml
檔案整合到專案中:
-
在你的 src/main/resources 目錄下建立一個資料夾,命名為
resources
,並將此配置檔案命名為logback.xml
,放置到src/main/resources
目錄下。 -
確保你的
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
配置檔案,你可以讓程式執行時的日誌記錄到指定的檔案,並且同時控制日誌輸出的格式、滾動策略、日誌級別等。