- log4j 教程
- log4j - 首頁
- log4j - 概述
- log4j - 安裝
- log4j - 架構
- log4j - 配置
- log4j - 示例程式
- log4j - 日誌方法
- log4j - 日誌級別
- log4j - 日誌格式化
- log4j - 檔案日誌
- log4j - 資料庫日誌
- log4j 有用資源
- log4j - 常見問題解答
- log4j - 快速指南
- log4j - 有用資源
- log4j - 討論
log4j - 配置
上一章解釋了 log4j 的核心元件。本章解釋瞭如何使用配置檔案來配置核心元件。配置 log4j 包括在配置檔案中分配級別、定義 Appender 和指定 Layout 物件。
log4j.properties 檔案是 log4j 的配置檔案,它以鍵值對的形式儲存屬性。預設情況下,LogManager 在CLASSPATH中查詢名為log4j.properties的檔案。
根日誌記錄器的級別定義為DEBUG。DEBUG將名為 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檔案中定義以下內容
根日誌記錄器的級別定義為DEBUG,DEBUG將名為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 格式化
您將在章節日誌格式化中學習如何格式化日誌訊息。