Struts2+Log4j整合


在本教學中,我們學習如何將log4j框架在Struts2的Web應用程式整合。所有需要做的有:
  1. 包含 log4j.jar 作為專案依賴
  2. 建立一個 log4j.properties 檔案,並把它放入 classpath 的根目錄-放到資原始檔夾中。

相關技術和工具的使用:

  1. Log4j 1.2.17
  2. Struts 2.1.8
  3. Tomcat 6
  4. MyEclipse 10

1. 工程結構

這裡我們建立一個web工程為:struts2log4j,參見下面最終的工程結構:

2. log4j.properties

建立log4j的屬性檔案,並把它放入資原始檔夾,請參閱步驟#1。
log4j.properties
# Root logger option
log4j.rootLogger=ERROR, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support rolling backup file.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${catalina.home}/logs/mystruts2app.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

4. Struts2 Action 和 Logging

一個簡單的動作返回一個頁面,並顯示了如何來執行 log4j 訊息紀錄檔記錄。
WelcomeAction.java
package com.tw511.common.action;

import org.apache.log4j.Logger;
import com.opensymphony.xwork2.ActionSupport;

public class WelcomeAction extends ActionSupport {

	private static final long serialVersionUID = 1L;

	//get log4j
	private static final Logger logger = Logger.getLogger(WelcomeAction.class);

	public String execute() throws Exception {

		// logs debug message
		if (logger.isDebugEnabled()) {
			logger.debug("execute()!");
		}

		// logs exception
		logger.error("This is Error message", new Exception("Testing"));

		return SUCCESS;

	}
}

5. Struts2組態

Struts2 的組態和JSP頁面,如果想了解的話。
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<constant name="struts.devMode" value="true" />

	<package name="welcome" namespace="/" extends="struts-default">

		<action name="welcome" class="com.tw511.common.action.WelcomeAction">
			<result name="success">pages/success.jsp</result>
		</action>

	</package>

</struts>
web.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">

	<display-name>Struts 2 Web Application</display-name>

	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
		</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

</web-app>
pages/success.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
</head>
 
<body>
<h1>Struts 2 + Log4j integration example</h1>

</body>
</html>

6. 範例測試

執行Struts 2的Web應用程式,並存取welcome的動作。

在瀏覽器中開啟 URL : http://localhost:8888/struts2log4j/welcome

6.1 所有紀錄檔訊息將顯示在控制台中。

Figure : Eclipse 終端

6.2 此外,紀錄檔檔案將在Tomcat 的紀錄檔檔案夾中被建立。

圖片: C:\mystruts2app.log

下載程式碼 – http://pan.baidu.com/s/1nt7yVep