Log4J 1.x 配置詳解

一 Log4J有三個主要的組件

1.1 Loggers(記錄類型)

Log4j劃分了5個級別:DEBUG,INFO,WARN,ERROR,FATAL。 這5個level是有優先級順序的,DEBUG<INFO<WARN<ERROR<FATAL。並且輸出的日誌不能小於你
指定的日誌級別。比如你指定了WARN級別,可以輸出WARN,ERROR和FATAL的日誌,但是不會輸出DEBUG和INFO級別的日誌


1.2 Appenders(輸出)

有了日誌,那麼日誌應該輸出到哪兒,控制檯?文件? 那麼Appenders就是來幹這個事情的。Appenders有一下集中輸出類型:
控制檯:org.apache.log4j.ConsoleAppender
文件:org.apache.log4j.FileAppender
每天產生一個日誌文件:org.apache.log4j.DailyRollingFileAppender
文件大小超過制定閥值產生一個新的文件:org.apache.log4j.RollingFileAppender
將日誌信息以流的形式發送到任何地方:org.apache.log4j.WriterAppender


1.3 Layouts(佈局)

Log4J提供了可以自己控制輸出格式,Layouts就可以幹這個事情,Layouts提供四種日誌輸出格式:
HTML表格形式:org.apache.log4j.HTMLLayout
靈活地指定佈局模式:org.apache.log4j.PatternLayout
包含INFO類型的佈局模式:org.apache.log4j.SimpleLayout
包含線程,日誌類型的佈局模式:org.apache.log4j.TTCCLayout


二 配置Log4J

Log4j支持兩種配置文件格式,一種是XML格式的文件,一種是properties屬性文件。下面以properties屬性文件爲例介紹log4j.properties的配置。


2.1 配置Root Logger

log4j.rootLogger = level, appenders, appenders, ...


level :設定日誌記錄的最低級別,可設的值有OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定義的級別,Log4j建議只使用中間四個級別(ERROR、WARN、INFO、DEBUG)。通過在這裏設定級別,您可以控制應用程序中相應級別的日誌信息的開關,比如在這裏設定了INFO級別,則應用程序中所有DEBUG級別的日誌信息將不會被打印出來。


appenders:就是指定日誌信息要輸出到哪裏。可以同時指定多個輸出目的地,用逗號隔開


示例:log4j.rootLogger = DEBUG,stdout,D,R


2.2 配置日誌信息輸出目的地(appender)



2.2.1 ConsoleAppender

log4j.appender.${自定義appender名字}:指定Appender類型
log4j.appender.${自定義appender名字}.Threshold = 指定日誌信息的最低輸出級別,默認爲DEBUG 
log4j.appender.${自定義appender名字}.ImmediateFlush = 消息都會被立即輸出(true|false)
log4j.appender.${自定義appender名字}.Target = 輸出類型(System.out|System.err)


示例:
log4j.appender.STDOUT = org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.Threshold = INFO
log4j.appender.STDOUT.ImmediateFlush = true
log4j.appender.STDOUT.Target = System.out




2.2.2 FileAppender

log4j.appender.${自定義appender名字} = 指定Appender類型
log4j.appender.${自定義appender名字}.Threshold = 指定日誌信息的最低輸出級別,默認爲DEBUG 
log4j.appender.${自定義appender名字}.ImmediateFlush = 消息都會被立即輸出(true|false)
log4j.appender.${自定義appender名字}.Append = 添加還是覆蓋(true|false)
log4j.appender.${自定義appender名字}.File = 日誌文件路徑


示例:
log4j.appender.F=org.apache.log4j.FileAppender
log4j.appender.F.Threshold = DEBUG 
log4j.appender.F.ImmediateFlush = true
log4j.appender.F.Append = true
log4j.appender.F.File = /opt/app/logs/server.out


2.2.3 DailyRollingFileAppender

log4j.appender.${自定義appender名字} = 指定Appender類型
log4j.appender.${自定義appender名字}.Threshold = 指定日誌信息的最低輸出級別,默認爲DEBUG 
log4j.appender.${自定義appender名字}.ImmediateFlush = 消息都會被立即輸出(true|false)
log4j.appender.${自定義appender名字}.Append = 添加還是覆蓋(true|false)
log4j.appender.${自定義appender名字}.File = 日誌文件路徑
log4j.appender.${自定義appender名字}.DatePattern = 指定日誌滾動頻率
常用的頻率選項:
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:每分鐘
示例:
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.ImmediateFlush = true
log4j.appender.D.Append = true
log4j.appender.D.File = /opt/app/logs/server.out
log4j.appender.D.DatePattern = '.'yyyy-MM-dd


2.2.4 RollingFileAppender

log4j.appender.${自定義appender名字} = 指定Appender類型
log4j.appender.${自定義appender名字}.Threshold = 指定日誌信息的最低輸出級別,默認爲DEBUG 
log4j.appender.${自定義appender名字}.ImmediateFlush = 消息都會被立即輸出(true|false)
log4j.appender.${自定義appender名字}.Append = 添加還是覆蓋(true|false)
log4j.appender.${自定義appender名字}.File = 日誌文件路徑
log4j.appender.${自定義appender名字}.MaxFileSize = 指定超過閥值數,然後滾動日誌文件,單位可以是KB,MB,GB
log4j.appender.${自定義appender名字}.MaxBackupIndex = 備份數(可選參數)


示例:
log4j.appender.R = org.apache.log4j.RollingFileAppender
log4j.appender.R = org.apache.log4j.RollingFileAppender
log4j.appender.R.Threshold = DEBUG 
log4j.appender.R.ImmediateFlush = true
log4j.appender.R.Append = true
log4j.appender.R.File = /opt/app/logs/server.out
log4j.appender.R.MaxFileSize = 10MB


2.2.5 WriterAppender

是前面幾個Appender的父類,如果我們要自定義Appedner,也可以繼承WriterAppender








2.3 配置Layout

log4j.appender.${appenders}.layout= 類名


2.3.1 HTMLLayout

log4j.appender.stdout.layout.Title=設置title
log4j.appender.stdout.layout.LocationInfo=是否設置locationInfo(true|false)


2.3.2 PatternLayout

我們可以通過PatternLayout靈活地指定佈局模式,ConversionPattern屬性指定怎樣格式化輸出日誌
格式化參數如下:
%p: 輸出日誌信息的優先級
%d: 輸出日誌時間點的日期或時間,指定日期格式%d{yyyy-MM-dd HH:mm:ss,SSS}
%r: 輸出自應用程序啓動到輸出該log信息耗費的毫秒數
%t: 輸出產生該日誌事件的線程名
%l: 輸出日誌事件的發生位置,相當於%c.%M(%F:%L)的組合,包括類全名、方法、文件名以及在代碼中的行數
%c: 輸出日誌信息所屬的類全名
%M: 輸出產生日誌信息的方法名
%F: 輸出日誌消息產生時所在的文件名稱
%L: 輸出代碼中的行號
%m: 輸出代碼中指定的具體日誌信息
%n: 輸出一個回車換行符
%-n參數:n表示數字,意思就是參數長度爲n,如果參數長度不夠,左對齊,然後剩餘的位數則用空格填滿,比如%-5p,如果是DEBUG的話就是DEBUG,長度爲5 如果是info的話長度爲4,剩餘的一位用空格填滿。


示例:


log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n


2.3.3 SimpleLayout

包含日誌信息的級別和信息字符串


2.3.4 TTCCLayout

包含日誌產生的線程、類別等等信息
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章