log4j - 配置
上一章介绍了 log4j 的核心组件。本章介绍如何使用配置文件配置核心组件。配置 log4j 涉及在配置文件中分配级别、定义 Appender 和指定 Layout 对象。
log4j.properties 文件是一个 log4j 配置文件,它将属性保存在键值对中。默认情况下,LogManager 在 CLASSPATH 中查找名为 log4j.properties 的文件。
根记录器的级别定义为 DEBUG。 DEBUG 将名为 X 的附加器附加到它。
将名为 X 的附加器设置为有效附加器。
设置附加器 X 的布局。
log4j.properties 语法:
以下是附加器 X 的 log4j.properties 文件的语法:
# 使用附加器 X 定义根记录器 log4j.rootLogger = DEBUG, X # 将名为 X 的附加器设置为文件附加器 log4j.appender.X=org.apache.log4j.FileAppender # 定义 X 的布局appender log4j.appender.X.layout=org.apache.log4j.PatternLayout log4j.appender.X.layout.conversionPattern=%m%n
log4j.properties 示例
使用上述语法,我们在 log4j.properties 文件中定义以下内容:
根记录器的级别定义为 DEBUG,DEBUG 附加器将其命名为 FILE。
附加器 FILE 定义为 org.apache.log4j.FileAppender。它会写入位于 log 目录中名为 log.out 的文件。
定义的布局模式为 %m%n,这意味着打印的日志消息后面会跟着一个换行符。
# 使用附加文件定义根记录器 log4j.rootLogger = DEBUG, FILE # 定义文件附加器 log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.File=${log}/log.out # 定义文件附加器的布局 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n
需要注意的是log4j 支持 UNIX 样式的变量替换,例如 ${variableName}。
调试级别
我们对两个附加程序都使用了 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
我们将在登录文件中介绍 FileAppender,在登录数据库中介绍 JDBC Appender。
布局
我们已将 PatternLayout 与附加器结合使用。所有可能的选项是:
- DateLayout
- HTMLLayout
- PatternLayout
- SimpleLayout
- XMLLayout
使用 HTMLLayout 和 XMLLayout,您可以生成 HTML 和 XML 格式的日志。
布局格式
您将在章节:日志格式中学习如何格式化日志消息。