使用 org.apache.Log4j.FileAppender
將日志記錄到文件。
FileAppender 擁有如下配置參數(shù):
屬性 | 描述 |
---|---|
immediateFlush | 該標(biāo)志位默認(rèn)為 true,意味著每次日志追加操作都將輸出流刷新至文件。 |
encoding | 可以使用任何編碼,默認(rèn)情況下使用平臺相關(guān)的編碼。 |
threshold | appender 對象的閥值。 |
Filename | 日志文件名。 |
fileAppend | 該值默認(rèn)為 true,其含義是讓日志追加至文件末尾。 |
bufferedIO | 該標(biāo)志位表示是否打開緩沖區(qū)寫,缺省為 false。 |
bufferSize | 如果開啟緩沖區(qū) I/O,該屬性指示緩沖區(qū)大小,缺省為 8 kb。 |
下面是一個使用 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>
您可以使用上述配置嘗試示例程序一章中的例子。
您可能因為某些原因,需要將日志寫入多個文件,比如當(dāng)文件大小達(dá)到一定閥值時。
為了將日志寫入多個文件,您需要使用 org.apache.Log4j.RollingFileAppender
,該類繼承了 FileAppender
類,繼承了它的所有屬性。
除了上述提到的 FileAppender
類的屬性,該類還包括如下可配置的屬性:
屬性 | 描述 |
---|---|
maxFileSize | 這是文件大小的關(guān)鍵值,大于該值時,文件會回滾。該值默認(rèn)為 10 MB。 |
maxBackupIndex | 該值表示備份文件的個數(shù),默認(rèn)為 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 配置文件,可以像上一節(jié)一樣生成 XML 配置文件,只需添加和 RollingFileAppender
相關(guān)的配置即可。
該示例配置文件展示了每個日志文件最大為 5 MB,如果超過該最大值,則會生成一個新的日志文件。由于 maxBackupIndex
的值為 2,當(dāng)?shù)诙€文件的大小超過最大值時,會擦去第一個日志文件的內(nèi)容,所有的日志都回滾至第一個日志文件。
您可以使用上述配置嘗試示例程序一章中的例子。
您也許需要逐日生成日志文件,以此更加整潔的記錄日志信息。
為了逐日生成日志文件,需要使用 org.apache.Log4j.DailyRollingFileAppender
,,該類繼承了 FileAppender
類,繼承了它的所有屬性。
除了上述提到的 FileAppender
類的屬性,該類多包含了一個重要屬性:
屬性 | 描述 |
---|---|
DatePattern | 該屬性表明什么時間回滾文件,以及文件的命名約定。缺省情況下,在每天午夜回滾文件。 |
DatePattern
使用如下規(guī)則控制回滾計劃:
DatePattern | 描述 |
---|---|
'.' yyyy-MM | 在本月末,下月初回滾文件。 |
'.' yyyy-MM-dd | 在每天午夜回滾文件,這是缺省值。 |
'.' yyyy-MM-dd-a | 在每天中午和午夜回滾文件。 |
'.' yyyy-MM-dd-HH | 在每個整點回滾文件。 |
'.' yyyy-MM-dd-HH-mm | 每分鐘回滾文件。 |
'.' yyyy-ww | 根據(jù)地域,在每周的第一天回滾。 |
下述 Log4j.properties 示例文件產(chǎn)生的日志文件在每天中午和午夜回滾:
# 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 配置文件,可以像上一節(jié)一樣生成 XML 配置文件,只需添加和 DailyRollingFileAppender
相關(guān)的配置即可。
您可以使用上述配置嘗試示例程序一章中的例子。