Log4j 是 Apapche 的開放源碼套件,也是業界常用的log記錄。
Log4j 能夠將訊息資料寫到 console, 檔案,TCP 協定的伺服器...等。
本篇實作說明 Log4j下載、基本設定、將訊息資料寫到 console及檔案。
Log4j版本說明: Log4j 1.x
使用測試程式版本:
Eclipse Kepler
JDK.1.7
Tomcat 7
maven 4
二、官方網站
如需詳細Log4j資訊可參考官方網站
https://logging.apache.org/
圖1
Log4j |
3.1 下載頁 https://logging.apache.org/log4j/1.2/download.html
圖2 進入 下載 說明頁
下載 說明頁 |
3.2 本文選擇1.2.17
http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.17/log4j-1.2.17.zip
圖2-1 下載
下載 |
3.3 取得 log4j-1.2.17.jar
圖2-2
log4j-1.2.17.jar |
四、使用 Maven 設定 dependency 加入 log4j
圖3 進入Apache Log4j 頁面,並選擇版本,
本文選擇1.2.17
Log4j 頁面,並選擇版本 |
圖4 取得Maven dependency
取得Maven dependency |
<!-- http://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
五、加入 Log4j jar
圖5 本文使用Maven專案,將pom.xml 加入log4j的 dependency 即可。
log4j的 dependency |
註:如果是下載jar檔,將 log4j-1.2.17.jar 加入 classpath中.
六、加入 log4j.properties 檔
這是log4j 的設定檔,可設定log等級 、輸出檔、console、layout 輸出格式...等。
圖6
輸出檔、console、layout 輸出格式 |
設定說明如下
#定義 Root Logger 的等級為 INFO,且為其指定一個 appender 名為 rootAppender. log4j.rootLogger=INFO, console #指定 console 的類型. log4j.appender.console=org.apache.log4j.ConsoleAppender #指定 console 的 Layout. log4j.appender.console.layout=org.apache.log4j.PatternLayout #log4j.appender.console.Target=System.out #指定 console Layout 的輸出格式. log4j.appender.console.layout.ConversionPattern=%5p [%d{yyyy-MM-ddHH:mm:ss}]-[%c{1}:%L][%x] %m%n
註:log4j.properties檔存放位置:預設讀取 build path 下。
圖6-1 設定build path 加入resources資料夾,
build path 加入resources |
圖6-2 存放log4j.properties檔
log4j.properties |
七、本文使用Maven專案測試說明
7-1 建立 測試程式 Log4jTestServlet.java
宣告使用logger
private static final Logger log= Logger.getLogger(Log4jTestServlet.class) ;
使用logger
log.info("Log4jTestServlet...");
圖7
宣告 使用log4j |
程式:
package com.test.log; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; /** * Servlet implementation class Log4jTestServlet */ public class Log4jTestServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final Logger log= Logger.getLogger(Log4jTestServlet.class) ; /** * Default constructor. */ public Log4jTestServlet() { // TODO Auto-generated constructor stub log.info("Log4jTestServlet..."); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub log.info("doGet..."); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub log.info("doPost..."); } }
設定: web.xml
<servlet> <servlet-name>Log4jTestServlet</servlet-name> <display-name>Log4jTestServlet</display-name> <description></description> <servlet-class>com.test.log.Log4jTestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Log4jTestServlet</servlet-name> <url-pattern>/Log4jTestServlet</url-pattern> </servlet-mapping>
八、測試
啟動後輸入servlet mapping name
http://localhost:8081/Log4jTest/Log4jTestServlet
查看console
圖 8
console 輸入出log |
測試專案下載
其它文章
沒有留言:
張貼留言