0
点赞
收藏
分享

微信扫一扫

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(控制台),

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

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

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

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


设置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



举报

相关推荐

0 条评论