log4j| log4j-日誌記錄到文件

要將日誌記錄信息寫入文件,必須使用org.apache.log4j.FileAppender


FileAppender配置

FileAppender具有以下可配置參數:

屬性 描述
immediateFlush 標誌的默認設置爲true,這意味着輸出流的文件被刷新,在每個追加操作
encoding 它可以使用任何字符編碼。默認情況下是特定於平臺的編碼方案
threshold 此appender的閾值級別(rootLogger級別高時,則以rootLogger爲準,比如此appender設置級別爲debug,而rootlogger設置的info,則只會記錄info的日誌 )
Filename 日誌文件的名稱
fileAppend 默認設置爲true,這意味着記錄的信息被附加到同一文件的末尾
bufferedIO 此標誌表示是否需要寫入緩存啓用。默認設置爲false
bufferSize 如果 bufferedI/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-示例程序


日誌記錄到多個文件

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

要將日誌記錄信息寫入多個文件,必須使用 org.apache.log4j.RollingFileAppender 類,該類擴展了FileAppender類並繼承了其所有屬性。

除了上面提到的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=5KB

# 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配置文件,則可以生成與初始部分中所述相同的文件,並僅添加與 RollingFileAppender 相關的其他參數。
此示例配置說明每個日誌文件的最大允許大小爲5MB。超過最大大小後,將創建一個新的日誌文件。由於maxBackupIndex定義爲2,一旦第二個日誌文件達到最大大小,則將刪除第一個日誌文件,然後,所有日誌記錄信息將回滾到第一個日誌文件。

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


每天生成日誌文件

可能需要每天生成日誌文件,以保持日誌信息的乾淨記錄。

要將日誌記錄信息每天寫入文件,必須使用 org.apache.log4j.DailyRollingFileAppender 類,該類擴展了FileAppender類並繼承了其所有屬性。

除了上面提到的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配置文件,則可以生成與初始部分中所述相同的文件,並僅添加與DailyRollingFileAppender相關的其他參數。
您可以嘗試使用上述配置的 log4j-示例程序

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章