Log4j常用的配置说明
出自Icafe8Wiki
Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件log4j.properties。
下面将介绍使用log4j.properties文件作为配置文件的方法,以isp平台log4j.properties为例:
log4j.rootLogger=ERROR,errorfilelog4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.errorfile.File=c\:/isplog/error.loglog4j.appender.errorfile.MaxBackupIndex=365 log4j.appender.errorfile.Threshold=ERRORlog4j.appender.errorfile.layout=org.apache.log4j.PatternLayoutlog4j.appender.errorfile.layout.ConversionPattern=%d %p %m%rnlog4j.appender.filterLog=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.filterLog.File=c\:/isplog/filterLog.loglog4j.appender.filterLog.MaxBackupIndex=365log4j.appender.filterLog.layout=org.apache.log4j.PatternLayoutlog4j.appender.filterLog.layout.ConversionPattern=%d %p %m%rnlog4j.appender.eventProcessLog=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.eventProcessLog.File=c\:/isplog/eventProcessLog.loglog4j.appender.eventProcessLog.layout=org.apache.log4j.PatternLayoutlog4j.appender.eventProcessLog.layout.ConversionPattern=%d %p %m%rnlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%rnlog4j.logger.com.shunwang=ERRORlog4j.logger.com.shunwang.common.filter.SWContextfilter=INFO,filterLoglog4j.logger.com.shunwang.isp.schedul.EventProcessThread=INFO,eventProcessLog
- 整理了一下,配置大致可以分为三部分:
Logger 负责处理日志记录的大部分操作。
其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
如:log4j.rootLogger=ERROR,errorfile(把ERROR以上等级日志信息输出到errorfile)。
其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,只有等于及高于这个级别的才进行处理,则应用程序中所有DEBUG级别的日志信息将不被打印出来。ALL:打印所有的日志,OFF:关闭所有的日志输出。 appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。 编辑] 2、配置日志信息输出目的地 Appender
Appender 负责控制日志记录操作的输出。
其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.classlog4j.appender.appenderName.option1 = value1…log4j.appender.appenderName.optionN = valueN
这里的appenderName可任意起名。
例子中配置了4个输出源,appenderName分别为:errorfile,filterLog,eventProcessLog,stdout。
以errorfile为例:
(1)log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender 定义名为errorfile的输出端是哪种类型,这里定义的是每天产生一个日志文件。
- Log4j提供的输出端有以下几种:
- org.apache.log4j.ConsoleAppender(控制台),
- org.apache.log4j.FileAppender(文件),
- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),可通过log4j.appender.R.MaxFileSize=100KB设置文件大小,还可通过 log4j.appender.appenderName.MaxBackupIndex=1设置为保存一个备份文件。
- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
- ①.ConsoleAppender选项
- Threshold=WARN:指定日志消息的输出最低层次。
- ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
- Target=System.err:默认情况下是:System.out,指定输出控制台
- ②.FileAppender 选项
- Threshold=WARN:指定日志消息的输出最低层次。
- ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
- File=mylog.txt:指定消息输出到mylog.txt文件。
- Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
- ③.DailyRollingFileAppender 选项
- Threshold=WARN:指定日志消息的输出最低层次。
- ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
- File=mylog.txt:指定消息输出到mylog.txt文件。
- Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
- DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
- 1)'.'yyyy-MM: 每月
- 2)'.'yyyy-ww: 每周
- 3)'.'yyyy-MM-dd: 每天
- 4)'.'yyyy-MM-dd-a: 每天两次
- 5)'.'yyyy-MM-dd-HH: 每小时
- 6)'.'yyyy-MM-dd-HH-mm: 每分钟
- ④.RollingFileAppender 选项
- Threshold=WARN:指定日志消息的输出最低层次。
- ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
- File=mylog.txt:指定消息输出到mylog.txt文件。
- Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
- MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
- MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
(2)log4j.appender.errorfile.File=c\:/isplog/error.log 指定输出端路径;
(3)log4j.appender.errorfile.MaxBackupIndex=365 指定可以产生的滚动文件的最大数为365;
(4)log4j.appender.errorfile.Threshold=ERROR 指定日志消息的输出最低层次;
(5)log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout Layout 负责格式化Appender的输出,这里指定errorfile输出端的layout为可以灵活地指定布局模式。
- Log4j提供的layout有以下几种:
- org.apache.log4j.HTMLLayout(以HTML表格形式布局),
- org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
- org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
- org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)。
- ①.HTMLLayout 选项
- LocationInfo=true:默认值是false,输出java文件名称和行号
- Title=my app file: 默认值是 Log4J Log Messages.
- ②.PatternLayout 选项
- ConversionPattern=%m%n :指定怎样格式化指定的消息。
(6)log4j.appender.errorfile.layout.ConversionPattern=%d %p %m%rn 格式化errorfile输出端的日志信息。
- Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:
- %m 输出代码中指定的消息
- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
- %r 输出自应用启动到输出该log信息耗费的毫秒数
- %c 输出所属的类目,通常就是所在类的全名
- %t 输出产生该日志事件的线程名
- %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
- %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
- %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
- log4j.logger.com.shunwang=ERROR 把这个包下出现的错误的等级设为ERROR;
- log4j.logger.com.shunwang.common.filter.SWContextfilter=INFO,filterLog 把com.shunwang.common.filter.SWContextfilter这个类的等级设为INFO,输出源为filterLog。
介绍几个常用的框架域的设置,这些包的设置可根据项目的实际情况而自行定制:
- log4j.logger.org.apache.commons=ERROR
- log4j.logger.org.apache.struts=WARN 这两句是struts的包。
- log4j.logger.org.springframework=DEBUG 此句为Spring的包。
- log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
- log4j.logger.org.hibernate=DEBUG 这两句是hibernate的包。