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格式的日志。
日志格式化
您将在日志格式一章学习如何格式化日志信息。