之前都是在一般的Java專案中進行,而本篇要介紹在Web專案中使用log4j的簡單範例。

若是這篇看不懂,建議先看過這篇還有這篇

log4j的版本為1.2.17

Web Server為tomcat 8.0

本範例要先把Tomcat安裝好,這樣才有Web容器可以執行jsp及Servlet。

 

在Eclipse建立一個新的動態Web專案(Dynamic Web Project)。

此範例的專案名稱為Log4jDemoWeb

專案建立後將log4j的jar檔放到WEB-INF/lib資料夾,如此即完成jar檔的匯入。

 

 

接著新增一個index.jsp於WebContent資料夾

 

index.jsp ...

...

說明

由於在index.jsp在第12行會調用Logger類別來產生log訊息,因此在第3行先利用JSP的page指令(JSP page directive)匯入org.apache.log4j.Logger。

第11~14行是Scriptlet,簡單說就是在JSP中寫Java程式碼。 

第12行呼叫Logger的getLogger()方法來取得Logger。

第14行呼叫Logger的debug()方法來輸出log訊息。

第16行的連結會呼叫LogDemoServlet,因為目前這隻程式尚未建立,因此先忽略(點下去也是出現404錯誤),後面會用到這個連結。

 

內容輸入完存檔,在執行index.jsp之前還必須先建立log4j.xml或是log4j.properties來設定logger的appender和layout等。

在專案目錄的src下新增一個log4j.xml。

 

log4j.xml的設定 ...

...

說明

第4行設定一個appender為ConsoleAppender,appender命名為"A1"。

第5~7行設定appender的layout為PatternLayout,以及layout的format。

第9~11行設定Logger為rootLogger,並將A1 appender新增給rootLogger。

 

log4j.xml設定完後就在tomcat上執行index.jsp。

接著tomcat開始啟動並執行index.jsp,執行完會在瀏覽器開啟如下

...

在執行index.jsp的同時,即會執行到index.jsp第14行的方法,因此log訊息已輸出至Eclipse的console。

 

 

再新增一個Servlet來測試看看,本範例中命名為LogDemoServlet.java

 

LogDemoServlet.java ...

...

說明

第21~23行為執行時會出現的log訊息。

 

 

在index.jsp第16行的連結呼叫Log.do,目的是要呼叫LogDemoServlet.java,因此還要在web.xml中設定Servlet的外部名稱及對映路徑(line 12 ~ 19)

web.xml ...

...

 

 

 

設定完重新啟動tomcat並執行index.jsp,在瀏覽器中點選下面的連結

...

點選後即會呼叫並執行LogDemoServlet.java這隻程式,由於doGet()中有撰寫logger的程式碼,因此log訊息也會輸出至Eclipse的console

 

並在Servlet中直接寫出網頁如下

...

 

因為Logger可能會用在專案中的每一隻程式(因為bug可能出現在任何地方),因此我想Logger實例的產生應該會寫在一個公用的類別中,並將參用的變數宣告為public static final,在tomcat啟動後即實例化,或是用Spring框架依賴注入的方式來產生,這樣就不用在每隻程式中重複取得Logger了(因為我沒親自寫過,所以是我猜的:p)。

文章標籤
創作者介紹

菲比傻大姐&肉豬

phoebelin0606 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 訪客
  • 感謝您,讓我對log4j比較全面的了解
找更多相關文章與討論