- log4j 教程
- log4j - 首頁
- log4j - 概述
- log4j - 安裝
- log4j - 架構
- log4j - 配置
- log4j - 示例程式
- log4j - 日誌記錄方法
- log4j - 日誌級別
- log4j - 日誌格式
- log4j - 檔案日誌記錄
- log4j - 資料庫日誌記錄
- log4j 有用資源
- log4j - 常見問題解答
- log4j - 快速指南
- log4j - 有用資源
- log4j - 討論
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 - 示例程式。