我们写的系统在运行过程中会发生一些意想不到的bug,为了跟踪这些bug,常做的方式是使用try块,在捕获异常后把信息写入日志。假如有一个历史遗留系统,它没有做异常捕获日志,而现在需要加上日志,怎么办呢?
AOP
如果你了解AOP,你会知道不必重写try块。而struts2的拦截器实现原理就是AOP,strut2中提供了一个异常拦截器ExceptionMappingInterceptor,在发生指定异常后,会由它处理。从它的源码可以知道,这个类是有写日志的功能的,就是默认是禁用了,最快的实现就是直接启用它的日志功能。
Struts2异常配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<!-- 继承struts-default以便使用它的拦截器stack——defaultStack -->
<package name="youname" extends="struts-default" namespace="/youurl">
<!-- 定义一个拦截器stack -->
<interceptors>
<interceptor-stack name="logException">
<interceptor-ref name="defaultStack" />
<!-- 覆盖defultStack中的exception设置,启用它的日志功能 -->
<interceptor-ref name="exception">
<param name="logEnabled">true</param>
<param name="logLevel">info</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 修改默认的拦截器stack,原来是defaultStack -->
<default-interceptor-ref name="logException"/>
<!--全局跳转-->
<global-results>
<result name="exception" >/500.jsp</result>
</global-results>
<!-- 定义要捕获的异常 -->
<global-exception-mappings>
<exception-mapping result="exception" exception="java.lang.Exception" />
</global-exception-mappings>
</package>
</struts>
日志配置
在src中配置log4j.properties文件,略。
个性化日志输出
如果不想使用ExceptionMappingInterceptor中自带的日志输入方式,可以自己实现一个拦截器,然后在上面的< interceptors >元素前定义它,如:
<interceptor name="exception" class="com.yourInterceptor"/>
优缺点
这种方式可以记录没有处理的异常(包括没有捕获处理的运行时异常和已经捕获处理,但继续往上层抛出的异常),对于那些被捕获但不往上层抛出的异常,由于异常拦截器无法捕获,也就无法写日志。
相关推荐
Struts2拦截器(Interceptor) Struts2拦截器(Interceptor)
解决Struts2中的中文乱码。该代码是用作Struts2的拦截器中
struts2常用拦截器,struts2经常用到的拦截器,熟悉熟悉
该例子为struts2注解与拦截器demo,利用myEclipse8.5开发,导入刚才后,自动加载所需struts2的jar包,可以直接运行,是初学struts2注解、拦截器很好的例子,保证10分钟学会2种技术,愿意分享给大家。
Struts2的拦截器的使用详解实例 博文链接:https://zmx.iteye.com/blog/457434
使用Struts2实现用户权限拦截、重点是掌握拦截器的使用和配置方法,通过案例的学习,就能掌握struts中拦截器的使用方法,让我们能快速上手
struts2 Interceptor拦截器 http://whitewolf.0fees.net
Struts2拦截器.ppt Struts2拦截器.ppt Struts2拦截器.ppt
关于struts2 拦截器的详细的解释及其在开发中对struts2的拦截器的应用和拦截器在框架中的作用.
Struts2拦截器源程序 Struts2拦截器源程序 Struts2拦截器源程序 Struts2拦截器源程序 Struts2拦截器源程序
详细说明了struts2中拦截器的使用。并且通过一个小例子讲解了拦截器的具体使用
struts2 用拦截器 实现用户权限登录 可以直接运行,只单单用到struts的东西。
struts2,Interceptor struts2拦截器实例,两套实例,一套是针对单个的action配置的,另一套实例是针对全局的action配置的拦截器interceptor
综合使用servlet filter与struts2 interceptor对权限进行验证。
使用struts拦截器+注解实现日志审计功能 详见博客: http://blog.csdn.net/lk_blog/article/details/10248395
基于struts2的拦截器测试,实现了页面的跳转,中间过程的拦截
Struts2在com.opensymphony.xwork2.interceptor.annotations包中定义了3个拦截器注解类型。
struts2拦截器的使用说明文档,配置说明文档。可以看一下
struts2拦截器应用小例子,与大家共分享
NULL 博文链接:https://cmexico.iteye.com/blog/621208