log4j組態


上一章介紹log4j的核心元件。本章介紹如何使用組態檔案來組態這些核心元件。組態log4j涉及分配級別,定義追加程式,並在組態檔案中指定布局的物件。

log4j.properties檔案是一個鍵 - 值對儲存 log4j 組態屬性檔案。預設情況下,紀錄檔管理在CLASSPATH 查詢一個名為 log4j.properties 的檔案。

  • 根紀錄檔記錄器的級別定義為DEBUG並連線附加器命名為X到它

  • 設定名為X的附加目的地是一個有效的appender

  • 設定佈局的附加器X

log4j.properties 語法:

以下是 log4j.properties 檔案的一個appender X的語法:

# Define the root logger with appender X
log4j.rootLogger = DEBUG, X

# Set the appender named X to be a File appender
log4j.appender.X=org.apache.log4j.FileAppender

# Define the layout for X appender
log4j.appender.X.layout=org.apache.log4j.PatternLayout
log4j.appender.X.layout.conversionPattern=%m%n

log4j.properties 範例:

使用上面的語法,我們定義 log4j.properties 檔案如下:

  • 根紀錄檔記錄器(logger)的級別定義為DEBUG並連線附加器命名為FILE

  • 附加器(appender)File是定義為org.apache.log4j.FileAppender並寫入到一個名為“log.out”位於紀錄檔log目錄下

  • 定義的布局模式是%m%n,這意味著每列印紀錄檔訊息之後,將加上一個換行符

# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

需要注意的是log4j支援UNIX風格的變數替換,如 ${variableName}.

偵錯級別:

使用DEBUG兩個追加程式。所有可能的選項有:

  • TRACE

  • DEBUG

  • INFO

  • WARN

  • ERROR

  • FATAL

  • ALL

這些級別將在 Log4j偵錯級別 這一文章中解釋

Appenders:

Apache的log4j提供Appender物件主要負責列印紀錄檔訊息到不同的目的地,如控制台,檔案,sockets,NT事件紀錄檔等等。

每個Appender物件具有與之相關聯的不同的屬性,並且這些屬性表明物件的行為

屬性 描述
layout Appender使用布局Layout 物件和與之相關的格式化的紀錄檔記錄資訊轉換模式
target 目標可以是一個控制台,一個檔案,或根據附加器的另一個專案
level 級別是必需的,以控制紀錄檔訊息的過濾
threshold Appender可以有與之獨立的記錄器級別相關聯的級別閾值水平。Appender忽略具有級別低於閾級別的任何紀錄檔訊息
filter Filter 物件可以分析超出級別的匹配記錄資訊,並決定是否記錄的請求應該由一個特定 Appender 或忽略處理

可以通過包括以下方法的組態檔案中的下面設定一個 Appender 物件新增到記錄器:

log4j.logger.[logger-name]=level, appender1,appender..n

可以編寫以XML格式相同的結構如下:

<logger name="com.apress.logging.log4j" additivity="false">
   <appender-ref ref="appender1"/>
   <appender-ref ref="appender2"/>
</logger>

如果想要新增Appender物件到程式,那麼可以使用下面的方法:

public void addAppender(Appender appender);

addAppender()方法新增一個appender到Logger物件。作為範例組態演示,可以新增很多Appender物件到記錄器在逗號分隔的列表,每個列印紀錄檔資訊分離目的地。

我們僅使用一個附加目的地FileAppender在我們上面的例子。所有可能的附加目的地選項有:

  • AppenderSkeleton

  • AsyncAppender

  • ConsoleAppender

  • DailyRollingFileAppender

  • ExternallyRolledFileAppender

  • FileAppender

  • JDBCAppender

  • JMSAppender

  • LF5Appender

  • NTEventLogAppender

  • NullAppender

  • RollingFileAppender

  • SMTPAppender

  • SocketAppender

  • SocketHubAppender

  • SyslogAppender

  • TelnetAppender

  • WriterAppender

我們將涵蓋 FileAppender檔案 和 JDBCAppender 記錄將被包括記錄在資料庫

Layout:

我們使用的PatternLayout 使用 appender。所有可能的選項有:

  • DateLayout
  • HTMLLayout
  • PatternLayout
  • SimpleLayout
  • XMLLayout

使用HTMLLayout和XMLLayout,可以在HTML和XML格式和生成紀錄檔。

布局格式:

如何在章節格式的紀錄檔資訊:Log格式