4 Log4j配置
log4j配置
Log4j
的配置包括在配置文件中:
- 指定
Level
、 - 定义
Appender
、 - 指明
Layout
。
Log4j.properties
文件是Log4j
的配置文件,属性以键值对的形式定义。默认情况下,LogManager
会在CLASSPATH
中寻找Log4j.properties
文件。
- 根日志的级别定义为
DEBUG
,并将名为XXX
的appender
添加其上。 - 将名为
XXX
的appender
设置为合法的appender
。 - 设置
XXX
这个appender
的layout
。
Log4j.properties的语法
为appender XXXXX
定义的Log4j.properties
的语法如下:
# Define the root logger with appender XXX log4j.rootLogger = DEBUG, XXX # Set the appender named XXX to be a File appender log4j.appender.XXX=org.apache.log4j.FileAppender # Define the layout for XXX appender log4j.appender.XXX.layout=org.apache.log4j.PatternLayout log4j.appender.XXX.layout.conversionPattern=%m%n
Log4j.properties示例
使用上述语法,我们在Log4j.properties
定义如下属性:
- 定义根日志级别为
DEBUG
,并将名为FILE
的appender
添加在其上。 appender FILE
定义为org.apache.log4j.FileAppender
,它将日志写入log
目录下一个名为log.out
的文件中。layout
被定义为%m%n
,其中%m
表示日志信息,%n
表示换行符,则%m%n
表示打印出日志信息并在末尾加入换行。
1 | # 定义变量,该变量表示日志文件所在的目录 |
变量替换
值得注意的是,Log4j
支持Unix
风格的变量替换,比如${variableName}
。
级别
所有可能的选项如下:
TRACE
、DEBUG
、INFO
、WARN
、ERROR
、FATAL
、ALL
。
这些级别会在本教程的后续部分讲解。
Appender对象
Apache Log4j
提供的Appender
对象主要负责将日志信息打印至不同目的地,比如控制台、文件、网络套接字、NT
事件日志等。
Appender对象属性
每个Appender
对象都有不同的属性,这些属性决定了该对象的行为。
属性 | 描述 |
---|---|
layout |
Appender 使用Layout 对象和与之关联的模式来格式化日志信息。 |
target |
目的地可以是控制台、文件,或依赖于appender 的对象。 |
level |
级别用来控制过滤日志信息。 |
threshold |
Appender 可脱离于日志级别定义一个阀值级别,Appender 对象会忽略所有级别低于阀值级别的日志。 |
filter |
Filter 对象可在级别基础之上分析日志信息,来决定Appender 对象是否处理或忽略一条日志记录。 |
将Appender添加到Logger对象
通过在配置文件中使用如下方法,将Appender
对象添加至Logger
对象:
1 | log4j.logger.[logger-name]=level, appender1,appender2...appendern |
也可以在XML
中定义同样的配置:
1 | <logger name="com.apress.logging.Log4j" additivity="false"> |
在程序中为Logger对象添加Appender对象
如果想在程序中添加Appender
对象,可使用如下方法:
1 | public void addAppender(Appender appender); |
addAppender()
方法为Logger
对象增加一个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
,在使用数据库记录日志一章讲解JDBCAppender
。
Layout对象
我们已经在appender
中使用了PatternLayout
,layout
对象的所有选项包括:
DateLayout
、HTMLLayout
、PatternLayout
、SimpleLayout
、XMLLayout
。
使用HTMLLayout
和XMLLayout
,可以生成HTML
和XML
格式的日志。
日志格式化
您将在日志格式一章学习如何格式化日志信息。