目录

log4j - 配置( Configuration)

前一章解释了log4j的核心组件。 本章介绍如何使用配置文件配置核心组件。 配置log4j涉及分配Level,定义Appender以及在配置文件中指定Layout对象。

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

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

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

  • 设置appender X的布局。

log4j.properties Syntax:

以下是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 Example

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

  • 根记录器的级别定义为DEBUGDEBUG appender命名为FILE

  • 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

这些级别将在本教程后面介绍。

Appenders

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

我们将在Logging in Files介绍FileAppender,并在登录数据库中介绍JDBC Appender。

Layout

我们使用了PatternLayout和我们的appender。 所有可能的选择是:

  • DateLayout
  • HTMLLayout
  • PatternLayout
  • SimpleLayout
  • XMLLayout

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

布局格式

您将在以下章节中学习如何格式化日志消息: Log Formatting

↑回到顶部↑
WIKI教程 @2018