位置:首頁 > Java技術 > Log4j教學 > log4j配置

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