log4j 官網推薦使用如下幾種,級別從高到低排列java
Level | 描述 |
---|---|
ERROR | 錯誤事件可能仍然容許應用程序繼續運行 |
WARN | 指定具備潛在危害的狀況 |
INFO | 指定可以突出在粗粒度級別的應用程序運行狀況的信息的消息 |
DEBUG | 指定細粒度信息事件是最有用的應用程序調試 |
org.apache.log4j.ConsoleAppender(輸出到控制檯),
org.apache.log4j.FileAppender(輸出到文件),
org.apache.log4j.DailyRollingFileAppender(天天產生一個日誌文件),
org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件),
org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)複製代碼
org.apache.log4j.HTMLLayout(以HTML表格形式佈局),
org.apache.log4j.PatternLayout(能夠靈活地指定佈局模式),
org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串),
org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)複製代碼
%m 輸出代碼中指定的消息
%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL
%r 輸出自應用啓動到輸出該log信息耗費的毫秒數
%c 輸出所屬的類目,一般就是所在類的全名
%t 輸出產生該日誌事件的線程名
%n 輸出一個回車換行符,Windows平臺爲「/r/n」,Unix平臺爲「/n」
%d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式,
好比:%d{yyy MMM dd HH:mm:ss , SSS},輸出相似:2002年10月18日 22:10:28,921
%l 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。
舉例:Testlog4.main(TestLog4.java: 10 )複製代碼
咱們工做中大多數是將全部的日誌輸出到一個文件中,由於在生產環境中若是不一樣級別的日誌散落在不一樣的文件中,出個錯那你就使勁找吧,可是log4j仍是給咱們提供了這個功能,如下我會給出具體的log4j.properties配置文件的詳細內容,舉例子出不一樣的場景.apache
log4j.propertiesbash
#將root級別設置成INFO,並輸出到mainLog對應的Append文件中
log4j.rootLogger=INFO, mainLog ,stdout
#將DEBUG級別的日誌輸出到自定義的Appender中,這裏mainLog的級別變成了DEBUG,他會覆蓋
#以前的INFO
log4j.logger.log.DetailAppender=DEBUG, mainLog, detailLog
#將某個文件夾的日誌級別設置成INFO,並追加到對應的xxAppender中
log4j.logger.com.csjd.xxx=INFO,xx,x
# 將stdout設置成控制檯輸出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.Threshold=DEBUG # 輸出DEBUG及以上級別的日誌
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n
# 天天生成一個新的文件
log4j.appender.mainLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.mainLog.File=${SA_LOG}/quickfix/mdccdh-info.log
log4j.appender.mainLog.DatePattern = '_'yyyy-MM-dd
log4j.appender.mainLog.Append=true
log4j.appender.stdout.Threshold=INFO # 輸出INFO及以上級別的日誌
#log4j.appender.mainLog.MaxBackupIndex=30
log4j.appender.mainLog.layout=org.apache.log4j.PatternLayout
log4j.appender.mainLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n複製代碼
tips:以上使用的${SA_LOG}爲系統環境變量,log4j能夠讀取環境變量配置,前提是這個變量得存在,否則日誌文件不會生成哦,log4j輸出日誌只會輸出比他級別高的日誌,不會向下.app