log4j - 配置

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

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

  • 根记录器的级别定义为 DEBUG . DEBUG 将名为X的appender附加到它.

  • 将名为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 文件中的以下内容:

  • 根记录器的级别定义为 DEBUG DEBUG 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}.

调试级别

我们已经使用了DEBUG appenders.所有可能的选项包括:

  • TRACE

  • DEBUG

  • INFO

  • 警告

  • 错误

  • 致命

  • ALL

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

Appenders

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

每个Appender对象都有不同的属性与它相关联,这些属性表示该对象的行为.

物业描述
布局Appender使用Layout对象和与它们相关联的转换模式来格式化日志信息.
target目标可能是控制台,文件,或其他项目,取决于appender.
level该级别是必需的控制日志消息的过滤.
阈值Appender可以拥有与其关联的阈值级别,与记录器级别无关. Appender会忽略任何级别低于阈值级别的日志消息.
filterFilter对象可以分析超出级别匹配的日志信息,并决定是否应该由特定的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,并在登录数据库.

布局

我们使用了PatternLayout和我们的appender.所有可能的选项包括:

  • DateLayout

  • HTMLLayout

  • PatternLayout

  • SimpleLayout

  • XMLLayout

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

布局格式

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