1. log4j.properties文件配置示例
# default properties to initialise log4j
log4j.rootLogger=ERROR,file,a1
log4j.appender.a1=org.apache.log4j.ConsoleAppender
log4j.appender.a1.layout=org.apache.log4j.PatternLayout
log4j.appender.a1.layout.ConversionPattern=[%d{MM-dd HH:mm:ss}] %-5p %c{1} [%t]: %m%n
# file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${webapp.root}/WEB-INF/log/sshtest.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%C] (%F:%L) - %m%n
log4j.appender.file.MaxFileSize=4096KB
2. web.xml文件配置示例
<web-app version="3.0"
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_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--注意各监听器的顺序,否则可能会出现上述的${webapp.root}/WEB-INF/log/sshtest.log不存在的异常-->
<!-- log4j config path -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<!-- webapp root path -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webapp.root</param-value>
</context-param>
<!-- spring config path -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<!-- log4j config listener -->
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<!-- spring contextloader listener -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
3. struts2.xml文件配置示例
按照如下配置,当应用出现未捕获的异常时,就能自动转到异常显示页面;
要注意各节点的顺序
<struts>
<package name="its" extends="struts-default">
<interceptors>
<interceptor-stack name="GlobalStack">
<interceptor-ref name="defaultStack">
<param name="exception.logEnabled">true</param>
<param name="exception.logLevel">ERROR</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="GlobalStack"></default-interceptor-ref>
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<global-exception-mappings>
<!--在此可以设置多个异常类型-->
<exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>
<action name="login" class="com.inspur.its.action.LoginAction">
<result name="success">/Result.jsp</result>
</action>
</package>
</struts>
4. error.jsp页面示例(仅显示了body部分,自行导入struts2的tablib)
<body>
<div align="CENTER">
<h2>页面出错了~</h2>
<hr>
<font color="red">出现异常:<br>
<s:property value="exception.message" /><br>
<s:property value="exception.stackTrace" /><br>
<!--
<s:property value="exceptionStack" /><br>
-->
</font><br>
<a href="javascript:void(0);" οnclick="window.history.back();">返回</a>
</div>
</body>
出现异常后的截图示例如下: