上一章介紹log4j的核心元件。本章介紹如何使用組態檔案來組態這些核心元件。組態log4j涉及分配級別,定義追加程式,並在組態檔案中指定布局的物件。
log4j.properties檔案是一個鍵 - 值對儲存 log4j 組態屬性檔案。預設情況下,紀錄檔管理在CLASSPATH 查詢一個名為 log4j.properties 的檔案。
根紀錄檔記錄器的級別定義為DEBUG並連線附加器命名為X到它
設定名為X的附加目的地是一個有效的appender
設定佈局的附加器X
以下是 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 檔案如下:
根紀錄檔記錄器(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偵錯級別 這一文章中解釋
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 記錄將被包括記錄在資料庫
我們使用的PatternLayout 使用 appender。所有可能的選項有:
使用HTMLLayout和XMLLayout,可以在HTML和XML格式和生成紀錄檔。
如何在章節格式的紀錄檔資訊:Log格式