你的位置:首页 > Java教程

[Java教程]log4j配置文件详解


在开发中经常会碰到日志,网上关于日志的框架也很多,像log4j、self4j、common-logging等,下面对log4j进行介绍。

log4j是java开发的日志框架,具有低侵入的特点,其重点使用的部分是log4j的配置文件,有两格式的配置文件,一种

### 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 

指定日志的输出级别和输出目的地,如,debug,sdtout,file

debug  指定日志的输出界别,log4j一共定义了9中日志界别:off、fatal、error、warn、info、debug、all 推荐使用其中的四种级别:error、warn、info、debug,如果使用了info,则error、warn、info级别都会输出,如果使用warn则error、info级别的日志都会输出;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,stdoutlog4j.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的配置文件之后,便可以按照需要配置日志的输出目的地、输出级别等。

有不当之处,欢迎指正

谢谢