log4j配置文件簡要記錄

和大多數配置文件同樣,log4j配置文件也有key-value形式和xml形式。這裏主要記錄一下key-value的形式html

咱們經過配置,能夠建立出Log4j的運行環境。Log4j由三個重要的組件構成:日誌信息的優先級,日誌信息的輸出目的地,日誌信息的輸出格式。數據庫

1、直接看一個配置文件(log4j.properties)

 # 配置根log,第一個參數爲你想要輸出的日誌的等級,後面的是自定義的輸出源(appender)
log4j.rootLogger = debug,console,I,E


### 這裏定義第一個輸出源的相關信息 

#輸出源console輸出到控制檯
log4j.appender.console = org.apache.log4j.ConsoleAppender 
log4j.appender.console.Target = System.out
 #日誌格式輸出方式,選着這種方式須要自定義格式
log4j.appender.console.layout = org.apache.log4j.PatternLayout 
#自定義格式
log4j.appender.console.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n 


### 輸出INFO級別的日誌信息到G://PetLoveWorkSpace//ZRJCashVip//logs/info.log
# I 是第二個輸出源
log4j.appender.I = org.apache.log4j.DailyRollingFileAppender
log4j.appender.I.File = G://PetLoveWorkSpace//ZRJCashVip//logs/info.log
log4j.appender.I.Append = true
# 這裏能夠配置本輸出源打印的級別
log4j.appender.I.Threshold = INFO 
log4j.appender.I.layout = org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n


### print error to = E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =G://PetLoveWorkSpace//ZRJCashVip//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

這裏配置,全部日誌將會在控制檯輸出。另外,INFO級別的日誌還會打印到info.log文件。ERROR級別的日誌打印到error.logapache

2、log4j配置文件詳解

 一、log4j.rootLogger = debug,console,I,Eapp

 這裏log4j.rootLogger=日誌級別,appender1, appender2, ….佈局

  • 日誌級別:all < debug < info < warn < error < fatal < off
  • rootLogger默認是對整個工程生效,若是隻想對某些包操做,那麼:log4j.logger.com.service=info, appender1, appender2, ….表示該日誌對package com.service生效

二、log4j.appender.I = org.apache.log4j.DailyRollingFileAppenderspa

這裏:log4j.appender.appender1=org.apache.log4j.日誌輸出的地方線程

  • ConsoleAppender(控制檯)
  • FileAppender(文件)
  • DailyRollingFileAppender(天天產生一個日誌文件,例如上面這個語句)
  • RollingFileAppender(文件大小到達指定尺寸時產生一個新的文件)
  • WriteAppender(將日誌信息以流格式發送到任意指定的地方)
  • JDBCAppender(將日誌信息保存到數據庫中)

三、log4j.appender.I.File = G://PetLoveWorkSpace//ZRJCashVip//logs/info.logdebug

這裏: log4j.appender.appender1.File = 日誌文件保存的地方日誌

四、log4j.appender.I.Threshold = INFO code

這裏:根據日誌別來打印,appender I 的級別是info,那麼全部info級別的日誌都將打印到appender I 指定的地方(通常是文件中嘛),好比,我上面配置文件中指定appender I 打印到info.log裏。

這一條頗有用,用這樣的方法咱們能夠將error級別的之日信息單獨打印到一個文件裏,定位問題的時候就省去了再一堆日誌文件裏慢慢找錯誤信息的麻煩了。

五、log4j.appender.I.layout = org.apache.log4j.PatternLayout

這裏:log4j.appender.appender1.layout=org.apache.log4j.日誌佈局格式

所謂的日誌佈局格式,就是指打印出來的日誌適合什麼樣子的。

  • HTMLLayout(以HTML表格形式佈局)
  • SimpleLayout(包含日誌信息的級別和信息字符串)
  • TTCCLayout(包含日誌產生的時間,執行緒,類別等信息)
  • PatternLayout(能夠靈活的指定佈局格式,經常使用

這裏的例子使用了最後一個,這種靈活指定的佈局格式咱們須要加上第六條,顯示指定打印的具體格式。其餘三條,能夠試試就知道是什麼樣的了。

六、log4j.appender.I.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

這裏:log4j.appender.appender1.layout.ConversionPattern=日誌輸出格式。

日誌輸出格式是本身指定的,具體這些符號表明什麼意思以下:

  •     %d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式,好比:%d{yyy-M-dd HH:mm:ss },輸出相似:2002-10-18- 22:10:28
  •     %t 輸出產生該日誌事件的線程名
  •     %r 輸出自應用啓動到輸出該日誌信息所耗費的毫秒數
  •     %p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL。若是是調用debug()輸出的,則爲DEBUG,依此類推
  •     %n 輸出一個回車換行符,Windows平臺爲「rn」,Unix平臺爲「n」。
  •     %m 輸出代碼中指定的信息,如log(message)中的message
  •     %l 輸出日誌事件的發生位置,即輸出日誌信息的語句處於它所在的類的第幾行
  •     %f 輸出日誌信息所屬的類的類名
  •     %c 輸出日誌信息所屬的類的全名

七、log4j.appender.I.Append = true

    意思是在日誌文件後追加。

3、關於log4j的應用,

     1.獲得記錄器

        使用Log4j,第一步就是獲取日誌記錄器,這個記錄器將負責控制日誌信息。其語法爲:

        public static Logger getLogger( String name)

        經過指定的名字得到記錄器,若是必要的話,則爲這個名字建立一個新的記錄器。Name通常取本類的名字,好比:

        static Logger logger = Logger.getLogger ( TestLog.class.getName () )

    2.讀取配置文件

       當得到了日誌記錄器以後,第二步將配置Log4j環境.這裏根據應用來配置加載log配置文件。

    三、插入日誌信息

      就是在相應的業務邏輯處調用日誌記錄器,使用不一樣優先級別的日誌記錄語句插入到想記錄日誌的地方。

  

 private static Logger logger = Logger.getLogger(TestLog.class);


logger.debug ( Object message ) ;  

logger.info ( Object message ) ;  

logger.warn ( Object message ) ;  

logger.error ( Object message ) ;

 

具體使用方式比較簡單,可是作好日誌的記錄方式,和打印內容仍是很難的,好的日誌記錄,是對於排查系統的錯誤與異常頗有幫助的。

要是打印的日誌在系統出問題時幫不上任何忙,要它何用。

關於如何作好日誌記錄,我還任重道遠,能夠參考:http://www.cnblogs.com/rollenholt/p/5392338.html

相關文章
相關標籤/搜索