鍍金池/ 教程/ Java/ 配置
Logging 級別
使用文件記錄日志
PatternLayout
安裝
使用數(shù)據(jù)庫記錄日志
示例程序
架構(gòu)
Logging 方法
HTMLLayout
概述
配置
日志格式

配置

上一章解釋了 Log4j 的核心組件。本章講述如何使用配置文件來配置核心組件。Log4j 的配置包括在配置文件中指定 Level、定義 Appender 和指明 Layout。

Log4j.properties 文件是 Log4j 的配置文件,屬性以鍵值對的形式定義。默認情況下,LogManager 會在 CLASSPATH 中尋找 Log4j.properties 文件。

  • 根日志的級別定義為 DEBUG,并將名為 X 的 appender 添加其上。
  • 將名為 X 的 appender 設(shè)置為合法的 appender。
  • 設(shè)置 appender X 的 layout。

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 示例

使用上述語法,我們在 Log4j.properties 定義如下屬性:

  • 定義根日志級別為 DEBUG,并將名為 FILE 的 appender 添加其上。
  • appender FILE 定義為 org.apache.Log4j.FileAppender,它將日志寫入 log 目錄下一個名為 log.out 的文件中。
  • layout 被定義為 %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 風(fēng)格的變量替換,比如 ${variableName}。

DEBUG 級別

兩個 appender 都使用了 DEBUG 級別,所有可能的選項如下:

  • TRACE
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL
  • ALL

這些級別會在本教程的后續(xù)部分講解。

Appender

Apache Log4j 提供的 Appender 對象主要負責(zé)將日志信息打印至不同目的地,比如控制臺、文件、網(wǎng)絡(luò)套接字、NT 事件日志等。

每個 Appender 對象都有不同的屬性,這些屬性決定了該對象的行為。

屬性 描述
layout Appender 使用 Layout 對象和與之關(guān)聯(lián)的模式來格式化日志信息。
target 目的地可以是控制臺、文件,或依賴于 appender 的對象。
level 級別用來控制過濾日志信息。
threshold Appender 可脫離于日志級別定義一個閥值級別,Appender 對象會忽略所有級別低于閥值級別的日志。
filter Filter 對象可在級別基礎(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 對象增加一個 Appender。如示例配置展示的那樣,可以通過逗號分隔的列表,為 logger 添加多個 Appender,將日志信息打印到不同的目的地。

在上面的例子中,我們只用到了 FileAppender,所有可用的 appender 包括:

  • AppenderSkeleton
  • AsyncAppender
  • ConsoleAppender
  • DailyRollingFileAppender
  • ExternallyRolledFileAppender
  • FileAppender
  • JDBCAppender
  • JMSAppender
  • LF5Appender
  • NTEventLogAppender
  • NullAppender
  • RollingFileAppender
  • SMTPAppender
  • SocketAppender
  • SocketHubAppender
  • SyslogAppender
  • TelnetAppender
  • WriterAppender

我們將在使用文件記錄日志一章講解 FileAppender,在使用數(shù)據(jù)庫記錄日志一章講解 JDBC Appender。

Layout

我們已經(jīng)在 appender 中使用了 PatternLayout,所有選項還包括:

  • DateLayout
  • HTMLLayout
  • PatternLayout
  • SimpleLayout
  • XMLLayout

使用 HTMLLayout 和 XMLLayout,可以生成 HTML 和 XML 格式的日志。

日志格式化

您將在日志格式一章學(xué)習(xí)如何格式化日志信息。

上一篇:PatternLayout下一篇:Logging 級別