鍍金池/ 教程/ Java/ 使用文件記錄日志
Logging 級別
使用文件記錄日志
PatternLayout
安裝
使用數(shù)據(jù)庫記錄日志
示例程序
架構(gòu)
Logging 方法
HTMLLayout
概述
配置
日志格式

使用文件記錄日志

使用 org.apache.Log4j.FileAppender 將日志記錄到文件。

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)的配置即可。

您可以使用上述配置嘗試示例程序一章中的例子。

上一篇:示例程序下一篇:HTMLLayout