教程 > Log4j 教程 > Log4j 基础 阅读:96

Log4j 配置

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

log4j.properties 文件是一个 log4j 配置文件,它将属性保存在键值对中。 默认情况下,LogManagerCLASSPATH 中查找名为 log4j2.properties 的文件。

  • 根记录器的级别定义为 DEBUGDEBUG 将名为 X 的附加程序附加到它。
  • 将名为 X 的 appender 设置为有效的 appender。
  • 设置 appender X 的布局。

log4j2.properties 语法

以下是 appender X 的 log4j2.properties 文件的语法:

#根记录器
rootLogger.level = info

#控制台数据
appender.console.type = Console
appender.console.name = console
#输出布局类型
appender.console.layout.type = PatternLayout
#输入信息格式
appender.console.layout.pattern =  %-d{yyyy-MM-dd HH:mm:ss,SSS} [%p] %c %m%n

log4j2.properties 示例

使用上述语法,我们在 log4j2.properties 文件中定义以下内容:

  • 根 logger 的级别定义为 DEBUG,DEBUG appender 命名为 FILE。
  • appender FILE 写入位于日志目录中的名为 log.out 的文件。
  • 定义的布局模式是 %m%n,这意味着打印的日志消息后面将跟一个换行符。
property.filename = /workspace/java/log4j
#
appender.infoFile.type = FILE
appender.infoFile.name = infoLogFile
#
appender.infoFile.fileName=${filename}/info.log
appender.infoFile.layout.type = PatternLayout
appender.infoFile.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c{1} [%t] - %m%n
rootLogger.level = info
rootLogger.appenderRef.infoFile.ref = infoLogFile
rootLogger.appenderRef.infoFile.level = info

需要注意的是,log4j 支持 UNIX 风格的变量替换,例如 ${variableName}

Debug 级别

我们已经将 DEBUG 与两个 appender 一起使用。 所有可能的选项是:

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

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

Appenders

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

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

属性 描述
layout Appender 使用 Layout 对象和与之关联的转换模式来格式化日志信息。
target 目标可能是控制台、文件或其他项目,具体取决于附加程序。
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 对象添加到逗号分隔列表中的记录器中,每个将记录信息打印到单独的目标。

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

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

我们将在 Logging in Files 中介绍 FileAppender,而 JDBC Appender 将在 Logging in Database 中介绍。

Layout

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

  • DateLayout
  • HTMLLayout
  • PatternLayout
  • SimpleLayout
  • XMLLayout

使用 HTMLLayoutXMLLayout,我们可以生成 HTML 和 XML 格式的日志。

Layout 格式

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

查看笔记

扫码一下
查看教程更方便