天天看点

Log4j 的配置

上一章介绍log4j的核心组件。本章介绍如何使用配置文件来配置这些核心组件。配置log4j涉及分配级别,定义追加程序,并在配置文件中指定布局的对象。

Appenders:

Apache的log4j提供Appender对象主要负责打印日志消息到不同的目的地,如控制台,文件,sockets,NT事件日志等等。每个Appender对象具有与之相关联的不同的属性,并且这些属性表明对象的行为,常用属性如下:

属性 描述
layout Appender使用布局Layout 对象和与之相关的格式化的日志记录信息转换模式
target 目标可以是一个控制台,一个文件,或根据附加器的另一个项目
level 级别是必需的,以控制日志消息的过滤
threshold Appender可以有与之独立的记录器级别相关联的级别阈值水平。Appender忽略具有级别低于阈级别的任何日志消息
filter Filter 对象可以分析超出级别的匹配记录信息,并决定是否记录的请求应该由一个特定 Appender 或忽略处理

根Logger

根logger主要定义log4j支持的日志级别及输出目的地,其语法为:

log4j.rootLogger = [ level ] , appenderName, appenderName, …

其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。

Level
ALL 各级包括自定义级别
DEBUG 指定细粒度信息事件是最有用的应用程序调试
ERROR 错误事件可能仍然允许应用程序继续运行
FATAL 指定非常严重的错误事件,这可能导致应用程序中止
INFO 指定能够突出在粗粒度级别的应用程序运行情况的信息的消息
OFF 这是最高等级,为了关闭日志记录
TRACE 指定细粒度比DEBUG更低的信息事件
WARN 指定具有潜在危害的情况

建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。

appenderName指定日志信息输出到哪个地方,可同时指定多个输出目的地。

配置输出目的地Appender

Appender主要定义日志信息输出在什么位置,主要语法为:

log4j.appender.appenderName = classInfo
log4j.appender.appenderName.option1 = value1
…...
log4j.appender.appenderName.optionN = valueN           

Log4j提供的appender有以下几种:

•org.apache.log4j.ConsoleAppender(控制台),

•org.apache.log4j.FileAppender(文件),

•org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),

•org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

•org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

配置日志信息的格式Layout

Layout 负责格式化Appender的输出,其语法为:

log4j.appender.appenderName.layout = classInfo
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN = valueN           

其中,Log4j提供的layout有以下几种:

•org.apache.log4j.ConsoleAppender(控制台),

设置package输出级别

可以设置不同package的日志输出级别,语法为:

log4j.logger.packageName=level

其中,packageName为实际的包名,level为日志级别,例如:

log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=debug           

Log4j配置方式

通过上面的介绍,我们已经大概清楚了配置Log4j所需要的内容,Log4j可以通过java程序动态设置,该方式缺点是:如果需要修改日志输出级别等信息,则必须修改java文件,然后重新编译,很是麻烦。log4j也可以通过配置文件的方式进行设置,目前支持两种格式的配置文件:

•properties文件(推荐)

•xml文件

以下是 log4j.properties 文件的一个样例语法:

# Define the root logger with appender X
log4j.rootLogger = DEBUG, X
 # Set the appender named X to be a File appender
log4j.appender.X=org.apache.log4j.FileAppender
# Define the layout for X appender
log4j.appender.X.layout=org.apache.log4j.PatternLayout
log4j.appender.X.layout.conversionPattern=%m%n           

使用上面的语法,我们定义 log4j.properties 文件如下:

● 根日志记录器(logger)的级别定义为DEBUG并连接附加器命名为FILE

● 附加器(appender)File是定义为org.apache.log4j.FileAppender并写入到一个名为“log.out”位于日志log目录下

● 定义的布局模式是%m%n,这意味着每打印日志消息之后,将加上一个换行符

# Define the root logger with appender file

log=D:/log4j

log4j.rootCategory=INFO, file

log4j.rootLogger = INFO,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

再写一个复杂点的,这个在实际项目中用的比较多

#设置等级和Appender。
log4j.rootLogger=debug,appender1,apppender2

#定义appender1属性和布局
#附加器(appender) appender1定义为控制台输出
log4j.appender. appender1= org.apache.log4j.ConsoleAppender
log4j.appender. appender1.layout=org.apache.log4j.PatternLayout
log4j.appender. appender1.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

#定义appender2属性和布局 

#appender2定义为文件输出
log4j.appender. appender2=org.apache.log4j.RollingFileAppender
log4j.appender.apppender2.File=example.log
log4j.appender.appender2.MaxFileSize=100KB
log4j.appenderappender2.MaxBackupIndex=1
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.appender2.layout.ConversionPattern=%p %t %c - %m%n
#输出日志的格式和信息都是可配可选的。           

参考:

http://zhaoyanblog.com/archives/167.html http://www.yiibai.com/log4j/log4j_configuration.html http://www.jb51.net/article/41001.htm