上一章解釋了 Log4j 的核心組件。本章講述如何使用配置文件來配置核心組件。Log4j 的配置包括在配置文件中指定 Level、定義 Appender 和指明 Layout。
Log4j.properties 文件是 Log4j 的配置文件,屬性以鍵值對的形式定義。默認(rèn)情況下,LogManager 會(huì)在 CLASSPATH 中尋找 Log4j.properties 文件。
為 appender X 定義的 Log4j.properties 的語法如下:
# 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 定義如下屬性:
# 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 風(fēng)格的變量替換,比如 ${variableName}。
兩個(gè) appender 都使用了 DEBUG 級(jí)別,所有可能的選項(xiàng)如下:
這些級(jí)別會(huì)在本教程的后續(xù)部分講解。
Apache Log4j 提供的 Appender 對象主要負(fù)責(zé)將日志信息打印至不同目的地,比如控制臺(tái)、文件、網(wǎng)絡(luò)套接字、NT 事件日志等。
每個(gè) Appender 對象都有不同的屬性,這些屬性決定了該對象的行為。
屬性 | 描述 |
---|---|
layout | Appender 使用 Layout 對象和與之關(guān)聯(lián)的模式來格式化日志信息。 |
target | 目的地可以是控制臺(tái)、文件,或依賴于 appender 的對象。 |
level | 級(jí)別用來控制過濾日志信息。 |
threshold | Appender 可脫離于日志級(jí)別定義一個(gè)閥值級(jí)別,Appender 對象會(huì)忽略所有級(jí)別低于閥值級(jí)別的日志。 |
filter | Filter 對象可在級(jí)別基礎(chǔ)之上分析日志信息,來決定 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()
方法為 Logger 對象增加一個(gè) Appender。如示例配置展示的那樣,可以通過逗號(hào)分隔的列表,為 logger 添加多個(gè) Appender,將日志信息打印到不同的目的地。
在上面的例子中,我們只用到了 FileAppender,所有可用的 appender 包括:
我們將在使用文件記錄日志一章講解 FileAppender,在使用數(shù)據(jù)庫記錄日志一章講解 JDBC Appender。
我們已經(jīng)在 appender 中使用了 PatternLayout,所有選項(xiàng)還包括:
使用 HTMLLayout 和 XMLLayout,可以生成 HTML 和 XML 格式的日志。
您將在日志格式一章學(xué)習(xí)如何格式化日志信息。