log4j 配置——迹忆客-ag捕鱼王app官网
上一章解释了 log4j 的核心组件。 本章介绍如何使用配置文件配置核心组件。 配置 log4j 包括在配置文件中分配 level、定义 appender 和指定 layout 对象。
log4j.properties
文件是一个 log4j 配置文件,它将属性保存在键值对中。 默认情况下,logmanager
在 classpath 中查找名为 log4j2.properties 的文件。
- 根记录器的级别定义为 debug。 debug 将名为 x 的附加程序附加到它。
- 将名为 x 的 appender 设置为有效的 appender。
- 设置 appender x 的布局。
log4j2.properties 语法
以下是 appender x 的 log4j2.properties
文件的语法:
#根记录器
rootlogger.level = info
#控制台数据
appender.console.type = console
appender.console.name = console
#输出布局类型
appender.console.layout.type = patternlayout
#输入信息格式
appender.console.layout.pattern = %-d{yyyy-mm-dd hh:mm:ss,sss} [%p] %c %m%n
log4j2.properties 示例
使用上述语法,我们在 log4j2.properties
文件中定义以下内容:
- 根 logger 的级别定义为 debug,debug appender 命名为 file。
- appender file 写入位于日志目录中的名为 log.out 的文件。
- 定义的布局模式是 %m%n,这意味着打印的日志消息后面将跟一个换行符。
property.filename = /workspace/java/log4j
#
appender.infofile.type = file
appender.infofile.name = infologfile
#
appender.infofile.filename=${filename}/info.log
appender.infofile.layout.type = patternlayout
appender.infofile.layout.pattern=[%-5level] %d{yyyy-mm-dd hh:mm:ss.sss} %c{1} [%t] - %m%n
rootlogger.level = info
rootlogger.appenderref.infofile.ref = infologfile
rootlogger.appenderref.infofile.level = info
需要注意的是,log4j 支持 unix 风格的变量替换,例如 ${variablename}
。
debug 级别
我们已经将 debug 与两个 appender 一起使用。 所有可能的选项是:
- 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 格式编写相同的配置,如下所示:
如果我们愿意在程序中添加 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 将在 中介绍。
layout
我们在 appender 中使用了 patternlayout
。 所有可能的选项是:
- datelayout
- htmllayout
- patternlayout
- simplelayout
- xmllayout
使用 htmllayout
和 xmllayout
,我们可以生成 html 和 xml 格式的日志。
layout 格式
我们将在章节: 中学习如何格式化日志消息。