log4j配置文件详解
在开发中经常会碰到日志,网上关于日志的框架也很多,像log4j、self4j、common-logging等,下面对log4j进行介绍。
log4j是java开发的日志框架,具有低侵入的特点,其重点使用的部分是log4j的配置文件,有两格式的配置文件,一种XML的,一种properties的,在开发中常用properties格式,对properties格式的配置文件做详细描述,log4j.properties
### set log levels ### log4j.rootLogger = debug,stdout,D,E log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = F://logs/log.log log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File =F://logs/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
上面是properties格式的配置文件
log4j.rootLogger ,此处也可以使用log4j.rootCategory,rootLogger是rootCategory的子类,现在已经不建议使用rootCatetory了。
指定日志的输出级别和输出目的地,如,debug,sdtout,file
debug 指定日志的输出界别,log4j一共定义了9中日志界别,由高到低为:off、fatal、error、warn、info、debug、all 推荐使用其中的四种级别:error、warn、info、debug,如果使用了info,则error、warn、info级别都会输出,如果使用warn则error、warn级别的日志都会输出;sdtout、file指定的是日志输出的位置的一个名称
log4j.appender.sdtout=org.apache.log4j.ConsoleAppender 指定sdtout的输出使用的是ConsoleAppender类,即输出到控制台
log4j.appender.stdout.Target = System.out 使用System.out 进行输出
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout 输出的布局
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n 输出的日志格式
默认情况下配置log4j.rootLogger对整个项目其作用,如果想对某个包起作用可以配置如下
log4j.logger.com.cn.mapper=debug com.cn.mapper是包名,此包下的所有类的日志都会输出,输出的级别为debug,即error、warn、info、debug级别的日志都会输出。
综上所述,一个log4j的配置文件包括以下及部分
log4j.rootLogger=[info|debug],sdtout,mail,file,appenderName 日志文件的级别,输出目的地名称
log4j.appender.appenderName=org.apache.log4j.DailyRollingFileAppender appenderName需要换成相应的名称 org.apache.log4j.DailyRollingFileAppender 指定使用的类
这里的类有以下几种:org.apache.log4j.ConsoleAppender(控制台)、org.apache.log4j.FileAppender(文件)、org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件) 、org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件
ConsoleAppender 是输出到控制台 ,有以下可选项Threshold(指定日志输出的最低级别)、Target(输出控制台)
log4j.appender.appenderName.layout = org.apache.log4j.PatternLayout 日志的格式布局,有这样几个可选的布局:org.apache.log4j.HTMLLayout(以HTML表格形式布局)、org.apache.log4j.PatternLayout(可以灵活地指定布局模式) 、org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串) 、org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
下面是一个输出到控制台的log4j的配置文件,
### set log levels ### log4j.rootLogger = debug,stdout log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
了解了log4j的配置文件之后,便可以按照需要配置日志的输出目的地、输出级别等。
有不当之处,欢迎指正
谢谢