1. 程式人生 > >java如何用LOG列印日誌並輸出資訊到檔案中

java如何用LOG列印日誌並輸出資訊到檔案中

使用log4j.jar。log4j 是apache 提供的記錄日誌的jar 檔。

除了這個包外,還需要另一個jar包:.commons-logging.jar

commons-logging.jar是配合log4j.jar列印輸出日誌必備的jar包。

下面我們就詳述一下列印輸出日誌的步驟:

首先,我們先將 準備好的兩個jar包放到專案的lib 包中(新增到專案的build path中)。 

然後,建立一個log4j.properties檔案。並放入專案的根路徑下.(也可以放入其他路徑,在讀的時候需要指定)。最好就是放到專案的根路徑下

並在log4j.properties檔案中新增一下配置內容:

對配置資訊進行解釋:

這裡指定了日誌輸出的級別 INFO. 你也可以指定BEBUG、ERROR、 WARN,或者全部指定用CONSOLE
stdout, logfile 指定日誌輸出的目的地。 這兩個名字可以隨便取,比如 A, 或B都可以。 實際的配置是 org.apache.log4j.ConsoleAppender 和RollingFileAppender 用於指定是控制檯還是檔案。 
另外還指定了輸出的格式, 已經產生的file 的規則。

log日誌檔案輸出路徑可以改,我寫的是E:/logfile.log。

1.rootLogger後面跟著輸出日誌的級別:

               1.1 ERROR 為嚴重錯誤 主要是程式的錯誤
               1.2  WARN 為一般警告,比如session丟失
               1.3  INFO 為一般要顯示的資訊,比如登入登出
               1.4  DEBUG 為程式的除錯資訊

stdout, logfile 指定日誌輸出的目的地。 這兩個名字可以隨便取,比如 A, 或B都可以

2.appender.moder1定義的是Log輸出的地方:

           2.1 org.apache.log4j.ConsoleAppender(控制檯)
           2.2 org.apache.log4j.FileAppender(檔案)
           2.3 org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌檔案)
           2.4 org.apache.log4j.RollingFileAppender(檔案大小到達指定尺寸的時候產生一個新的檔案)
           2.5 org.apache.log4j.WriterAppender(將日誌資訊以流格式傳送到任意指定的地方)

3.appender.moder1.Layout定義的是日誌資訊的格式:

           3.1 org.apache.log4j.HTMLLayout(以HTML表格形式佈局),
           3.2 org.apache.log4j.PatternLayout(可以靈活地指定佈局模式),
           3.3 org.apache.log4j.SimpleLayout(包含日誌資訊的級別和資訊字串),
           3.4 org.apache.log4j.TTCCLayout(包含日誌產生的時間、執行緒、類別等等資訊)

4.在appender.moder1.Layout下定義的是PatternLayout才有log4j.appender.moder1.layout.ConversionPattern

   該屬性自定義日誌輸出格式

       -X號: X資訊輸出時左對齊;
       %p: 輸出日誌資訊優先順序,即DEBUG,INFO,WARN,ERROR,FATAL,
       %d: 輸出日誌時間點的日期或時間,預設格式為ISO8601,也可以在其後指定格式,比如:%d{yyy MMM dd                                        HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
       %r: 輸出自應用啟動到輸出該log資訊耗費的毫秒數
       %c: 輸出日誌資訊所屬的類目,通常就是所在類的全名
       %t: 輸出產生該日誌事件的執行緒名
       %l: 輸出日誌事件的發生位置,相當於%C.%M(%F:%L)的組合,包括類目名、發生的執行緒,以及在程式碼中的行數。                               舉例:Testlog4.main (TestLog4.java:10)
      %x: 輸出和當前執行緒相關聯的NDC(巢狀診斷環境),尤其用到像java servlets這樣的多客戶多執行緒的應用中。
      %%: 輸出一個"%"字元
      %F: 輸出日誌訊息產生時所在的檔名稱
      %L: 輸出程式碼中的行號
      %m: 輸出程式碼中指定的訊息,產生的日誌具體資訊
      %n: 輸出一個回車換行符,Windows平臺為"\r\n",Unix平臺為"\n"輸出日誌資訊換行

5.Threshold是個全域性的過濾器,它將把低於所設定的level的資訊過濾不顯示出來。

程式碼中使用:

1、程式碼中使用的包:

2、定義使用log

其中SmsSendService代表你當前的類名。

最後輸出的日誌資訊為:

這樣就ok了。然後找到你配置的日誌列印檔案的目錄,你就會發現多了一個logfile.log檔案。然後用超級編輯器開啟所有的日誌都被記錄在這個檔案中。