1. 程式人生 > 其它 >Log4j日誌框架使用

Log4j日誌框架使用

技術標籤:Log4jlog4jjava

Log4j日誌框架使用

Log4j的配置檔案

  • 想要使用Log4j,需要在專案目錄下建立一個lib資料夾,在資料夾中匯入Log4j的jar包

在這裡插入圖片描述

  • 然後,在src目錄下建立log4j.properties配置檔案,需要將配置檔案進行配置然後才能正常使用,一般Log4j配置檔案內容如下:
log4j.rootLogger=error,stdout
## error 代表日誌輸出的級別,error及以上級別才輸出  logfile表示將日誌寫入到檔案,這裡可以新增多個引數,新增stdout在控制檯輸出,用逗號隔開

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
## 上面的程式碼表示日誌輸出到控制檯
log4j.appender.stdout.Target=System.err
## 上面的程式碼配置輸出的類
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
##上面的程式碼表示輸出時的格式的設定
## stdout  這個名稱可以修改,但是要保證所有的地方保持一致,這裡的配置表示使用控制檯輸出日誌的配置

log4j.appender.logfile=org.apache.log4j.FileAppender
## 上面的程式碼表示日誌輸出的類
log4j.appender.logfile.File=d:/msb.log
## 上面一行程式碼是日誌檔案地址的配置
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
## 上面的程式碼表示輸出時格式的類
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd   HH:mm:ss} %l %F %p %m%n
## 上面一行程式碼是日誌輸出格式的配置
## logfile  這個名稱可以修改,但是要保證所有地方保持一致,這裡的配置表示寫入到日誌檔案的配置

Log4j日誌的級別

  • FATAL:指出現非常嚴重的錯誤事件,這些錯誤可能導致應用程式異常中止
  • ERROR:指雖有錯誤,但仍允許應用程式繼續執行
  • WARN:指執行環境潛藏著危害
  • INFO:指報告資訊,這些資訊在粗粒度級別上突出顯示應用程式的程序
  • DEBUG:指細粒度資訊事件,對於應用程式的除錯是最有用的

Log4j的日誌格式化字元含義

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

Java程式碼中使用Log4j

package com.shanlei;


import org.apache.log4j.Logger;

/**
 * @author: shanlei
 * @version: 1.0
 */
public class TestLog4j {
    // 這是main方法,實現程式主要邏輯
    public static void main(String[] args) {
        Logger logger = Logger.getLogger(TestLog4j.class);
        // 建立logger物件,注意導包的時候,需要導org.apache.log4j.Logger這個包

        logger.fatal("這是fatal級別:嚴重錯誤警告");
        logger.error("這是error級別:錯誤警告");
        logger.warn("這是warn級別:提醒警告");
        logger.info("這是inroad級別:資訊");
        logger.debug("這是debug級別:除錯級別");
    }
}