要將日誌記錄信息寫入文件,必須使用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-示例程序。