日誌及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"