完整的 Web Project 必定需要完善的 Log 紀錄,故將 Log 紀錄實作納入本次系列文章中。當然 Spring MVC 可以搭配的 Log Library 也有很多選擇, log4j 與 slf4j 的組合不過是其中的選擇之一。
首先於 Apache log4j 網站下載我們需要的 Library, 下載完後將它放置到 /WebContent/WEB-INF/lib 底下。除了需要將 Library 放到指定路徑下,我們還須要一個 log4j 的設定檔,檔名為 log4j.properties,我習慣擺放路徑如下:
除了 log4j 之外,我們還需要到 slf4j 網站下載 Library,一樣將我們需要的兩個檔案放置到 lib 路徑底下。故我們總共需要三個 JAR 檔分別為 log4j-1.2.17.jar、slf4j-api-1.7.5.jar、slf4j-log4j12-1.7.5.jar,當然 JAR 檔的版本盡量是使用最新的版本較佳,如下圖:
如此我們的準備工作完成,接著我們還要來定義 log4j.properties 內容,內容如下:
因 log4j 定義了幾個 log 輸出的層級分別為 TRACE、DEBUG 、INFO 、WARN、ERROR、FATAL,這幾個層級關係到我們 Log 輸出的資訊,照上面範例可看到 log4j.rootLogger 部份定義參數為 INFO 與 CONSOLE,代表 Log 輸出層級設定為 INFO,而後面的 CONSOLE 不代表層級,而是指定 log 輸出模式的代號 log4j.appender.CONSOLE。若將 CONSOLE 改為 A1 輸出模式則設定檔內容如下:
範例目前設定為輸出模式為顯示在 Console 畫面,而你也可以同時輸出多個模式,例如增加輸出文字檔案,如下圖:
設定檔完成之後,於 Controller 中做個測試,如下:
可看到我們在 Controller 中增加了兩個輸出訊息方式,隨著 log4j 對應的層級也分別有它對應的 Method ,例如 INFO 對應為 logger.info( ) 而 DEBUG 對應 logger.debug( )。還記得我們在 log4j.properties 裡的 log4j.rootLogger 定義了輸出層級為 INFO 嗎,雖然在 home ( ) 裡面執行了兩個 Log Method ,但根據層級設定為 INFO 時,實際輸出的資訊只會有 logger.info( ) 的部份,根據設定檔的的參數不同,於輸出 Log 更加有調整彈性。測試結果如下:
如此一來就完成了 lo4j 與 slf4j 的搭配使用。當然 log4j 還有其他更多的應用,詳細的部份可以參考官網文件。其他 Spring Framework 相關教學可以參考本篇整理。
熱門文章
-
Launchd 是設計用來管理系統中的 Process、Application 及 Script,它包含了與 Cron 相同的服務。本文章將要介紹如何透過 Launchd 管理並執行例行性任務於 Mac OS X 上。( 其他 Mac 相關教學可以參考 本篇整理 。If you...
-
之前的文章主要探討的都是一個訊息由一個 Consumer 處理,但若我們需要的是一個訊息同時傳送至所有的 Consumer 的話,我們則需要應用 Publish 與 Subscribe 模式,本篇將討論如何使用這個模式。( 其他 RabbitMQ 相關教學可以參考 本篇整理 )...
-
Jekyll 是一個很方便的網站、部落格產生器,它的功能夠簡潔就是專注在產生一個靜態網站。但也因為這樣,有一些需要動態產生的東西無法透過 Jekyll 直接實現。例如:每當使用者進入頁面,讓網頁產生隨機文章連結。所以,本篇將介紹如何利用 Jekyll 實現隨機文章的功能。( If...
-
本篇針對資料存取採用 Hibernate 與 Spring MVC 達到 CRUD ( 新增、讀取、修改、刪除)功能,DB 方面使用 H2 Data Base。閱讀本篇文章可先參考前一篇 H2 Data Base 設定應該會更有幫助。此外因為資料存取部份複雜,所以會拆成數個部份一...
-
開發 React 應用程式時,比較常遇到的問題就是 bundle.js 或其他檔案太大,導致頁面載入時間過長。但透過 Webpack 與一些優化技巧可以大幅減少整個應用程式大小。因此,本篇將介紹如何利用 Webpack 減少 React 應用程式大小。( If you want ...






