log4j - 配置



上一章解释了 log4j 的核心组件。本章解释了如何使用配置文件来配置核心组件。配置 log4j 包括在配置文件中分配级别、定义 Appender 和指定 Layout 对象。

log4j.properties 文件是 log4j 的配置文件,它以键值对的形式保存属性。默认情况下,LogManager 在CLASSPATH中查找名为log4j.properties的文件。

  • 根日志记录器的级别定义为DEBUGDEBUG将名为 X 的 appender 附加到它。

  • 将名为 X 的 appender 设置为有效的 appender。

  • 为 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文件中定义以下内容

  • 根日志记录器的级别定义为DEBUGDEBUG将名为FILE的 appender 附加到它。

  • Appender FILE 定义为 org.apache.log4j.FileAppender。它写入位于log目录中的名为log.out的文件。

  • 定义的布局模式为%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}。

调试级别

我们对两个 appender 都使用了 DEBUG。所有可能的选项是

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

这些级别将在本教程的后面部分进行解释。

Appender

Apache log4j 提供了 Appender 对象,这些对象主要负责将日志消息打印到不同的目标,例如控制台、文件、套接字、NT 事件日志等。

每个 Appender 对象都与其关联的不同属性,这些属性指示该对象的行为。

属性 描述
layout Appender 使用 Layout 对象及其关联的转换模式来格式化日志信息。
target 目标可以是控制台、文件或其他项目,具体取决于 appender。
level 级别是控制日志消息过滤所必需的。
threshold Appender 可以具有与其关联的阈值级别,独立于日志记录器级别。Appender 会忽略任何级别低于阈值级别的日志消息。
filter Filter 对象可以分析超出级别匹配的日志信息,并决定特定 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() 方法将 Appender 添加到 Logger 对象。如示例配置所示,可以在逗号分隔的列表中将多个 Appender 对象添加到日志记录器,每个对象将日志信息打印到不同的目标。

在上面的示例中,我们只使用了一个 appender FileAppender。所有可能的 appender 选项是

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

我们将在文件日志中介绍 FileAppender,并在数据库日志中介绍 JDBC Appender。

Layout

我们对 appender 使用了 PatternLayout。所有可能的选项是

  • DateLayout
  • HTMLLayout
  • PatternLayout
  • SimpleLayout
  • XMLLayout

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

Layout 格式化

您将在章节日志格式化中学习如何格式化日志消息。

广告