上一章介绍log4j的核心组件。本章介绍如何使用配置文件来配置这些核心组件。配置log4j涉及分配级别,定义追加程序,并在配置文件中指定布局的对象。
Appenders:
Apache的log4j提供Appender对象主要负责打印日志消息到不同的目的地,如控制台,文件,sockets,NT事件日志等等。每个Appender对象具有与之相关联的不同的属性,并且这些属性表明对象的行为,常用属性如下:
根Logger
根logger主要定义log4j支持的日志级别及输出目的地,其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。
建议只使用四个级别,优先级从高到低分别是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(将日志信息以流格式发送到任意指定的地方)
•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.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
● 根日志记录器(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
#输出日志的格式和信息都是可配可选的。
参考: