log4j配置


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

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

  • 根记录器的级别定义为 DEBUG 。在 DEBUG 重视名为X给它的附加目的地。

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

  • 设置appender X的布局。

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

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

  • appender FILE 被定义为 org.apache.log4j.FileAppender 。它写入位于 日志 目录中的名为 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。所有可能的选项是:

  • 跟踪
  • DEBUG
  • 信息
  • 警告
  • 错误
  • 致命
  • 所有

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

附加目的地

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

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

属性 描述
布局 Appender使用Layout对象和与它们关联的转换模式来格式化日志记录信息。
目标 目标可能是控制台,文件或其他项目,具体取决于appender。
水平 需要该级别来控制日志消息的过滤。
Appender可以独立于记录器级别设置与其相关的阈值级别。Appender将忽略任何级别低于阈值级别的日志消息。
过滤 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对象添加到以逗号分隔的列表中的记录器,每个列表都将记录信息打印到单独的目标。

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

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

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

布局

我们已经使用PatternLayout与我们的appender。所有可能的选项是:

  • DateLayout
  • HTMLLayout
  • 的PatternLayout
  • SimpleLayout
  • XMLLayout

使用HTMLLayout和XMLLayout,您也可以生成登录HTML和XML格式。

布局格式

您将在章节中了解如何格式化日志消息:日志格式