1. 程式人生 > >日誌及log4j框架

日誌及log4j框架

日誌分類

  SQL日誌、異常日誌、業務日誌


日誌實現

1、jdk也提供日誌記錄功能

  沒有日誌級別;
  如果想寫出到檔案,需要自己使用IO流來實現

2、log4j是一個非常優秀的開源日誌記錄工具

  a、控制日誌的輸出級別
  b、控制日誌資訊輸送的目的地是控制檯、檔案等
  c、控制每一條日誌的輸出格式

3、slf4j

  slf4j 依賴 jdk日誌實現、log4j日誌框架,可以在這兩者之間切換呼叫

  hibernate預設的日誌框架是slf4j、log4j

4、logback

  logback效率更高,是log4j作者的新產品

  logback也可以在jdk和log4j之間切換呼叫


log4j的使用

1、新增 log4j 的jar包

  a、log4j-1.2.16.jar
  b、commons-logging-1.1.3.jar

2、建立log4j.properties檔案並配置

3、程式碼實現

   private Logger log = Logger.getLogger(this.getClass());

   log.info("方法開始...");


配置例項

# 設定日誌級別和輸出目的地
# 日誌級別 fatal>error>warn>info>debug,開發時一般設定為debug最低級別,生產上可設定為info或warn級別
# 輸出目的地的名稱自定義,這裡定義了stdout和logfile;其中stdout代表輸出到控制檯
log4j.rootLogger
=debug,stdout,logfile # 把日誌資訊輸出到控制檯 log4j.appender.stdout=org.apache.log4j.ConsoleAppender # 打印出來是紅色字型 log4j.appender.stdout.Target=System.err # 輸出簡單格式 log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout # 把日誌資訊輸出到檔案 log4j.appender.logfile=org.apache.log4j.FileAppender # 指定檔名 log4j.appender.logfile.File
=zr.log # 這裡沒有使用 simpleLayout,而是使用 PatternLayout log4j.appender.logfile.layout=org.apache.log4j.PatternLayout # 使用 PatternLayout 還要為其指定格式 log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%l%F%p%m%n

輸出格式配置

%p:輸出日誌級別,即debug、info、warn、error、fatal
%d:輸出日誌發生時間
%r:輸出從應用啟動到輸出該log資訊耗費的毫秒數
%l:輸出日誌發生位置,相當於%C.%M(%F:%L)的組合,包括類名、發生的執行緒、產生日誌的檔案、程式碼中的行數
如:TestLog4j.main(TestLog4j.java:10)
    TestLog4j         ------ 類名
    main           ------ 發生的執行緒
    TestLog4j.java      ------ 由哪個檔案產生的日誌
    10         ------ 程式碼中的行數
%F:輸出產生日誌檔案,%l已經包含了%F
%L:輸出程式碼中的行數,%l已經包含了%L
%m:輸出日誌內容
%n:輸出換行符,windows為"\r\n",unix為"\n"