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格式