JAVA Apache Log4j API 實作與教學 (Mail,File,SQL)


Introduction

Log4j 是一套開放源碼的工具,方便程式設計人員在程式中加入 log 機制,並輸出到各種目標上。Log4j 能夠透過外部的設定檔(properites 或 XML)進行設定。Log4j 能夠將 log message 寫到 console, 檔案,串流,TCP 協定的伺服器, Unix Syslog daemon, Mail, Darabase 等。Log4j 具有 5 種 log 層級(DEBUG, INFO, WARN, ERROR, FATAL),可用於不同的系統狀態下所產生的訊息。本文針對log目標為檔案, Mail, Darabase等進行實作與測試。

Log4j運作方式

log4j主要的元件

    • Logger - 在程式中使用,進行 logging 的元件,Logger 可以被指派等級。能夠指派給 Logger 的等級有 : DEBUG, INFO, WARN, ERROR, FATAL 5 種,定義在 org.apache.log4j.Level 類別中。這 5 種等級的高低順序為 FATAL > ERROR > WARN > INFO > DEBUG。
    • Appender - 負責將 log message 輸出到各種裝置上,透過 Appender, Logger 能夠將 log message 輸出到指定的裝置上。一個 Logger 能夠擁有多個 Appender,所以 Logger 能夠同時將 log message 輸出到多個個裝置上。
    • Layout - 決定 log message 的格式表示法,透過 Layout 的配置,能夠自由改變 Logger 寫出 log message 的格式。

Log4j 的階層架構

同一個程式中可以是用多個logger,logger彼此間包含階層式的關係。最頂端的logger稱為Root logger,例如有一個com.transtep.logger為root,那麼com.transtep.looger.ui就是root的隸屬logger。階層的最高的 Root logger 一定存在且不具有名稱屬性,可以隨時在程式中以 Logger.getRootLogger() 取得,其它 logger 則以 Logger.getLogger(String loggerName) 取得。位定義層級的子logger將會使用上層為logger層級。

Download

log4j官方網站 - http://logging.apache.org/
下載log4j,亦可以使用Eclipse內附的log4j。
下載所需的Lib
Postgresql JDBC Drive - http://jdbc.postgresql.org/
Java Mail API - http://java.sun.com/products/javamail/

log4j設定檔介紹

log4j提供兩種方式建立設定檔,Properties與XML在這裡採用較為直覺化的Properties進行測試。
新增一個檔案Log4j.properties

測試log4sj

新增TestLog4j.java

格式支援介紹

%c 輸出日誌訊息所屬的類別的全名
%d 輸出日誌時間點的日期或時間,指定格式的方式:%d{yyy-MM-dd HH:mm:ss }。
%l 輸出日誌事件的發生位置,即輸出日誌訊息的語句處於它所在的類別的第幾行。
%m 輸出代碼中指定的訊息,如log(message)中的message。
%n 輸出一個列尾符號。
%p 輸出優先階層,即DEBUG,INFO,WARN,ERROR,FATAL。如果是調用debug()輸出的,則為DEBUG,依此類推。-5p 代表將此字串填滿至 5 個字元,以空白補不足處。
%r 輸出自應用啟動到輸出該日誌訊息所耗費的毫秒數。
%t 輸出產生該日誌事件的線程名。
%f 輸出日誌訊息所屬的類別的類別名。

Reference

Facebook 留言

廣告

樂樂童鞋