一、本篇實作
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 |
三、下載 Apache 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 |
測試專案下載
其它文章