log4j - 配置



上一章解釋了 log4j 的核心元件。本章解釋瞭如何使用配置檔案來配置核心元件。配置 log4j 包括在配置檔案中分配級別、定義 Appender 和指定 Layout 物件。

log4j.properties 檔案是 log4j 的配置檔案,它以鍵值對的形式儲存屬性。預設情況下,LogManager 在CLASSPATH中查詢名為log4j.properties的檔案。

  • 根日誌記錄器的級別定義為DEBUGDEBUG將名為 X 的 appender 附加到它。

  • 將名為 X 的 appender 設定為有效的 appender。

  • 為 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檔案中定義以下內容

  • 根日誌記錄器的級別定義為DEBUGDEBUG將名為FILE的 appender 附加到它。

  • Appender FILE 定義為 org.apache.log4j.FileAppender。它寫入位於log目錄中的名為log.out的檔案。

  • 定義的佈局模式為%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}。

除錯級別

我們對兩個 appender 都使用了 DEBUG。所有可能的選項是

  • TRACE
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL
  • ALL

這些級別將在本教程的後面部分進行解釋。

Appender

Apache log4j 提供了 Appender 物件,這些物件主要負責將日誌訊息列印到不同的目標,例如控制檯、檔案、套接字、NT 事件日誌等。

每個 Appender 物件都與其關聯的不同屬性,這些屬性指示該物件的行為。

屬性 描述
layout Appender 使用 Layout 物件及其關聯的轉換模式來格式化日誌資訊。
target 目標可以是控制檯、檔案或其他專案,具體取決於 appender。
level 級別是控制日誌訊息過濾所必需的。
threshold Appender 可以具有與其關聯的閾值級別,獨立於日誌記錄器級別。Appender 會忽略任何級別低於閾值級別的日誌訊息。
filter Filter 物件可以分析超出級別匹配的日誌資訊,並決定特定 Appender 是否應該處理日誌請求或忽略日誌請求。

我們可以透過在配置檔案中包含以下設定,並使用以下方法將 Appender 物件新增到 Logger

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 物件新增到日誌記錄器,每個物件將日誌資訊列印到不同的目標。

在上面的示例中,我們只使用了一個 appender FileAppender。所有可能的 appender 選項是

  • AppenderSkeleton
  • AsyncAppender
  • ConsoleAppender
  • DailyRollingFileAppender
  • ExternallyRolledFileAppender
  • FileAppender
  • JDBCAppender
  • JMSAppender
  • LF5Appender
  • NTEventLogAppender
  • NullAppender
  • RollingFileAppender
  • SMTPAppender
  • SocketAppender
  • SocketHubAppender
  • SyslogAppender
  • TelnetAppender
  • WriterAppender

我們將在檔案日誌中介紹 FileAppender,並在資料庫日誌中介紹 JDBC Appender。

Layout

我們對 appender 使用了 PatternLayout。所有可能的選項是

  • DateLayout
  • HTMLLayout
  • PatternLayout
  • SimpleLayout
  • XMLLayout

使用 HTMLLayout 和 XMLLayout,您還可以生成 HTML 和 XML 格式的日誌。

Layout 格式化

您將在章節日誌格式化中學習如何格式化日誌訊息。

廣告

© . All rights reserved.