在開發中經常會碰到日志,網上關於日志的框架也很多,像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的配置文件之后,便可以按照需要配置日志的輸出目的地、輸出級別等。
有不當之處,歡迎指正
謝謝