上一章介绍了log4j的核心组件。本章介绍如何使用配置文件配置核心组件。配置log4j涉及分配级别,定义Appender以及在配置文件中指定Layout对象。
log4j.properties文件是一个log4j的配置文件其中保持在键-值对的特性。默认情况下,LogManager 在CLASSPATH中查找名为log4j.properties的文件。
- 根日志记录器(root)的级别定义为DEBUG,并连接附加器命名为X到它
- 设置名为X的附加程序是一个有效的Appender
- 设置名为X的附加程序的布局。
log4j.properties语法:
以下是附加程序X 的log4j.properties文件的语法:
# 使用附加程序X定义根记录器,并将根记录器的日志级别设置成DEBUG级别
log4j.rootLogger = DEBUG, X
# 将名为X的附加程序 设置为文件附加程序FileAppender
log4j.appender.X=org.apache.log4j.FileAppender
# 定义名为X的附加程序的布局
log4j.appender.X.layout=org.apache.log4j.PatternLayout
log4j.appender.X.layout.conversionPattern=%m%n
log4j.properties示例
使用以上语法,我们在log4j.properties文件中定义以下内容:
- 根记录器的级别定义为DEBUG,其名称为FILE的附加程序。
- 为名为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}
。
Debug Level(调试级别)
上面我们已经给两个附加程序的追加器定义为DEBUG的 日志级别了。它的所有可能的选项如下:
- 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
我们将在log4j - 日志记录到文件中介绍FileAppender,并在登录数据库中介绍JDBC Appender 。
Layout(布局)
上面我们已将局PatternLayout(模式布)与我们的附加程序(Appender)一起使用。它所有可能的选项是:
- DateLayout (日期布局)
- HTMLLayout (HTMLLayout)
- PatternLayout (模式布局)
- SimpleLayout (简单版式)
- XMLLayout (XML布局)
使用HTMLLayout和XMLLayout,您还可以生成HTML和XML格式的日志。
Layout Formatting(布局格式)
您将学习如何格式化章日志消息: log4j-日志格式