log4j之log4j.properties引數詳解(log4j各個配置引數含義)
====>log4j之log4j.properties引數詳解
====>log4j介紹:
Log4j是Apache的一個開源專案,通過使用Log4j,我們可以控制日誌資訊輸送的目的地是控制檯、檔案、GUI元件,甚至是套介面伺服器、NT的事件記錄器、UNIX Syslog守護程序等;我們也可以控制每一條日誌的輸出格式;通過定義每一條日誌資訊的級別,我們能夠更加細緻地控制日誌的生成過程。最令人感興趣的就是,這些可以通過一個配置檔案來靈活地進行配置,而不需要修改應用的程式碼。
為什麼使用log4j輸出日誌
(1) 通過修改配置檔案,就可以決定log資訊的目的地——控制檯、檔案、GUI元件、甚至是套介面伺服器、NT的事件記錄器、UNIX Syslog守護程序等。
(2) 通過修改配置檔案,可以定義每一條日誌資訊的級別,從而控制是否輸出。在系統開發階段可以列印詳細的log資訊以跟蹤系統執行情況,而在系統穩定後可以關閉log輸出,從而在能跟蹤系統執行情況的同時,又減少了垃圾程式碼(System.out.println(……)等)。
(3) 使用log4j,需要整個系統有一個統一的log機制,有利於系統的規劃。
配置引數說明:
1、八種輸出級別
- OFF:
關閉所有日誌資訊
- FATAL:
嚴重錯誤 主要是程式的錯誤,不可修復,程式已經到達不可執行程度
- ERROR:
錯誤 程式的錯誤,可以修復,但程式執行中可能會發生不可恢復的嚴重錯誤
- WARN:
警告,程式有錯誤,只做警告動作,程式依然可以正常執行
- INFO:
要輸出的資訊,顯示給程式使用者
- DEBUG:
輸出程式執行時資訊,以便更好的除錯
- TRACE:
比DEBUG更細粒度的事件資訊
- ALL:
開啟所有日誌資訊
以上八種日誌級別從上到下依次由高到低排序,但是log4j建議
只使用
ERROR、WARN、INFO、DEBUG四個級別,當然了,除此之外,自己也可以定義其他級別,但是開發當中基本的幾個級別已經可以滿足需求。
2、五種日誌資訊輸出目標
- org.apache.log4j.ConsoleAppender:
輸出到控制檯
- org.apache.log4j.FileAppender
輸出到檔案
- org.apache.log4j.DailyRollingFileAppender:
每天產生一個日誌檔案
- org.apache.log4j.RollingFileAppender:
限定日誌檔案大小,檔案大小到達指定尺寸的時候產生一個新的檔案
- org.apache.log4j.WriterAppender:
將日誌資訊以流格式傳送到任意指定的地方
3、四種配置日誌資訊的格式
- org.apache.log4j.HTMLLayout:
以HTML表格形式佈局
- org.apache.log4j.PatternLayout:
可以靈活地指定佈局模式
- org.apache.log4j.SimpleLayout:
包含日誌資訊的級別和資訊字串
- org.apache.log4j.TTCCLayout:
包含日誌產生的時間、執行緒、類別等等資訊
4、控制檯選項
- Threshold=DEBUG:
指定日誌訊息的輸出最低層次
- ImmediateFlush=true:
預設值是true,意謂著所有的訊息都會被立即輸出
- Target=System.err:
預設情況下是:System.out,指定輸出控制檯
- Threshold=DEBUF:
指定日誌訊息的輸出最低層次
- File=mylog.txt:
指定訊息輸出到mylog.txt檔案
, - Append=false:
預設值是true,即將訊息增加到指定檔案中,false指將訊息覆蓋指定的檔案內容
- MaxFileSize=100KB:
字尾可以是KB, MB 或者是 GB. 在日誌檔案到達該大小時,將會自動滾動,即將原來的內容移到mylog.log.1檔案
- MaxBackupIndex=2:
指定可以產生的滾動檔案的最大數
- log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n:
自定義輸出格式
4.1、日誌資訊格式中幾個符號所代表的含義:
-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"輸出日誌資訊換行
4.2、可以在%與模式字元之間加上修飾符來控制其最小寬度、最大寬度、和文字的對齊方式。如:
1)%20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,預設的情況下右對齊
2)%-20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,"-"號指定左對齊
3)%.30c:指定輸出category的名稱,最大的寬度是30,如果category的名稱大於30的話,就會將左邊多出的字元截掉,但小於30的話也不會有空格
4)%20.30c:如果category的名稱小於20就補空格,並且右對齊,如果其名稱長於30字元,就從左邊較遠輸出的字元截掉
5、幾個常用配置:
A1–列印到螢幕上
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p [%t] %37c %3x - %m%n
A2–列印到檔案DAOLog中–專門為DAO層服務
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.file=DAOLog
log4j.appender.A2.DatePattern=’.’yyyy-MM-dd
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
A3–列印到檔案BusinessLog中–專門記錄邏輯處理層服務log資訊
log4j.appender.A3=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A3.file=BusinessLog
log4j.appender.A3.DatePattern=’.’yyyy-MM-dd
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
A4–列印到檔案alllog中–記錄所有log資訊
log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A4.file=alllog
log4j.appender.A4.DatePattern=’.’yyyy-MM-dd
log4j.appender.A4.layout=org.apache.log4j.PatternLayout
log4j.appender.A4.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
Appender的使用
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.file=demo
log4j.appender.A2.DatePattern=’.’yyyy-MM-dd
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%m%n
Layout的配置
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
總結:
為什麼這麼多人都在使用log4j?Because:
(1
)很明顯我們在編寫程式碼的時候有各種需要列印日誌的需求,比如:我們除錯程式碼的時候;我們的應用出現了問題,我們分析、定位、解決問題的時候;我們想將某些日誌資訊作為離線的業務資料分析的時候等等
(2
)最簡單的列印日誌的方式就是使用系統本身的輸出語句,不過對於大多數需求這種方式都是不能滿足的
(3
)於是我們的目光可能會向編寫一個專門列印日誌資訊的工具類轉移,不過有人更近了一步,寫出了一個日誌框架供我們使用
(4
)使用日誌框架的好處顯而易見,方便、自在、功能強大能夠滿足各種需求,不好的地方也是有的,比如:如果你也進行了試驗你會發現,程式變慢了,需要一定的時間和精力作為學習的成本
(5
)日誌框架都是能控制什麼哪?那我們需要列印的日誌都能滿足什麼樣的需求哪?通常我們希望一個日誌框架能夠靈活的做到以下三點:
①:能夠控制日誌資訊想往哪裡打就往哪裡打,比如:控制檯、檔案、郵箱、資料庫等等
②:能夠控制日誌資訊想怎麼打就怎麼打,比如:我想要列印時間、程式的名稱、程式的方法名、程式的行號、執行緒的名稱等等
③:能夠控制日誌資訊想打什麼打什麼,不想打的就不打,日誌資訊是分級別的,有時候我只想看錯誤的資訊或者警告的資訊,有時候我想看到所有的資訊我想除錯程式等等
(6
)有這麼一個工具,尤其是當程式出現問題的時候,專案負責人讓你趕緊解決問題,這時候有一份日誌檔案可供分析,一定好過各種猜測,程式設計之中沒有偶然性,輸入對應必然輸出結果!
以上內容僅供參考和學習 ———– 如有雷同,純屬意外……