log4j - 檔案日誌記錄



要將日誌資訊寫入檔案,您必須使用org.apache.log4j.FileAppender

FileAppender 配置

FileAppender 具有以下可配置引數:

屬性 描述
immediateFlush 此標誌預設設定為 true,這意味著輸出流在每次追加操作時都會重新整理到檔案。
encoding 可以使用任何字元編碼。預設情況下,它是平臺特定的編碼方案。
threshold 此附加程式的閾值級別。
Filename 日誌檔案的名稱。
fileAppend 此標誌預設設定為 true,這意味著日誌資訊將追加到同一檔案的末尾。
bufferedIO 此標誌指示是否需要啟用緩衝寫入。預設情況下,它設定為 false。
bufferSize 如果啟用了緩衝 I/O,則表示緩衝區大小。預設情況下,它設定為 8kb。

以下是 FileAppender 的示例配置檔案log4j.properties

# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender

# Set the name of the file
log4j.appender.FILE.File=${log}/log.out

# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true

# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug

# Set the append to false, overwrite
log4j.appender.FILE.Append=false

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

如果您希望擁有與上述log4j.properties檔案等效的 XML 配置檔案,則以下是其內容:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>

<appender name="FILE" class="org.apache.log4j.FileAppender">

   <param name="file" value="${log}/log.out"/>
   <param name="immediateFlush" value="true"/>
   <param name="threshold" value="debug"/>
   <param name="append" value="false"/>
   
   <layout class="org.apache.log4j.PatternLayout">
      <param name="conversionPattern" value="%m%n"/>
   </layout>
</appender>

<logger name="log4j.rootLogger" additivity="false">
   <level value="DEBUG"/>
   <appender-ref ref="FILE"/>
</logger>

</log4j:configuration>

您可以使用上述配置嘗試log4j - 示例程式

多檔案日誌記錄

出於某些原因,您可能希望將日誌訊息寫入多個檔案,例如,如果檔案大小達到某個閾值。

要將日誌資訊寫入多個檔案,您必須使用擴充套件FileAppender類並繼承其所有屬性的org.apache.log4j.RollingFileAppender類。

除了上面提到的 FileAppender 的可配置引數外,我們還有以下可配置引數:

屬性 描述
maxFileSize 這是檔案的臨界大小,超過此大小檔案將被滾動。預設值為 10 MB。
maxBackupIndex 此屬性表示要建立的備份檔案數量。預設值為 1。

以下是 RollingFileAppender 的示例配置檔案log4j.properties

# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.RollingFileAppender

# Set the name of the file
log4j.appender.FILE.File=${log}/log.out

# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true

# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug

# Set the append to false, should not overwrite
log4j.appender.FILE.Append=true

# Set the maximum file size before rollover
log4j.appender.FILE.MaxFileSize=5MB

# Set the the backup index
log4j.appender.FILE.MaxBackupIndex=2

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

如果您希望擁有 XML 配置檔案,您可以生成與初始部分中提到的相同的 XML 檔案,並僅新增與RollingFileAppender相關的附加引數。

此示例配置演示了每個日誌檔案的最大允許大小為 5 MB。超過最大大小時,將建立一個新的日誌檔案。由於maxBackupIndex定義為 2,一旦第二個日誌檔案達到最大大小,第一個日誌檔案將被擦除,此後,所有日誌資訊將回滾到第一個日誌檔案。

您可以使用上述配置嘗試log4j - 示例程式

每日日誌檔案生成

可能需要每天生成日誌檔案,以便保持日誌資訊的清晰記錄。

要每天將日誌資訊寫入檔案,您必須使用擴充套件FileAppender類並繼承其所有屬性的org.apache.log4j.DailyRollingFileAppender類。

除了上面提到的 FileAppender 的可配置引數外,只有一個重要的可配置引數:

屬性 描述
DatePattern 這指示何時滾動檔案以及要遵循的命名約定。預設情況下,每天午夜進行滾動。

DatePattern 使用以下模式之一控制滾動計劃:

DatePattern 描述
'.' yyyy-MM 在每個月末和下個月初滾動。
'.' yyyy-MM-dd 每天午夜滾動。這是預設值。
'.' yyyy-MM-dd-a 每天中午和午夜滾動。
'.' yyyy-MM-dd-HH 每小時滾動。
'.' yyyy-MM-dd-HH-mm 每分鐘滾動。
'.' yyyy-ww 根據區域設定,每週第一天滾動。

以下是一個示例配置檔案log4j.properties,用於生成每天中午和午夜滾動的日誌檔案。

# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender

# Set the name of the file
log4j.appender.FILE.File=${log}/log.out

# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true

# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug

# Set the append to false, should not overwrite
log4j.appender.FILE.Append=true

# Set the DatePattern
log4j.appender.FILE.DatePattern='.' yyyy-MM-dd-a

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

如果您希望擁有 XML 配置檔案,您可以生成與初始部分中提到的相同的 XML 檔案,並僅新增與DailyRollingFileAppender相關的附加引數。

您可以使用上述配置嘗試log4j - 示例程式

廣告