• struts2 自定义异常拦截器配log4j


    log4j.rootLogger = debug,stdout,F
    
    log4j.appender.stdout = org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target = System.out
    log4j.appender.stdout.Encoding = Utf-8
    log4j.appender.stdout.Threshold = debug
    log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n
    
    
    log4j.appender.F = org.apache.log4j.RollingFileAppender
    log4j.appender.F.File =d:/log/1111111.txt
    log4j.appender.F.Append = true
    log4j.appender.F.Threshold = INFO
    log4j.appender.F.MaxFileSize = 1
    log4j.appender.F.MaxBackupIndex = 5
    log4j.appender.F.layout = org.apache.log4j.PatternLayout
    log4j.appender.F.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n
    
    
    log4j.logger.exeception.ExceptionAction=DEBUG, async  
    log4j.additivity.exeception.ExceptionAction=false
    log4j.appender.async=org.apache.log4j.RollingFileAppender
    log4j.appender.async.File=d:/logs/async.log
    log4j.appender.async.Append=true
    log4j.appender.async.MaxFileSize=1GB
    log4j.appender.async.MaxBackupIndex=5
    log4j.appender.async.layout=org.apache.log4j.PatternLayout
    log4j.appender.async.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] [%t] - %m%n
    log4j.appender.async.encoding=gbk
            <!-- 测试自定义异常 -->
            <action name="exceptionAction_*" class="exeception.ExceptionAction" method="{1}">
                <result>/hello.jsp</result>
            </action>
        <package name="all" extends="struts-default">
            <interceptors>
                <interceptor name="error" class="interception.ErrorInterceptor"></interceptor>
                <!-- 配置拦截器栈 -->
                <interceptor-stack name="myStacks">
                    <interceptor-ref name="defaultStack" />
                    <interceptor-ref name="error" />
                </interceptor-stack>
            </interceptors>
            <!-- 覆盖底层的拦截器栈 对包中的所有action都有效 -->
            <default-interceptor-ref name="myStacks"></default-interceptor-ref>
    
            <global-results>
                <result name="error" type="dispatcher">/error.jsp</result>
            </global-results>
            <global-exception-mappings>
                <exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
            </global-exception-mappings>
        </package>
    package interception;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.apache.log4j.Logger;
    import org.apache.struts2.StrutsStatics;
    
    
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.Interceptor;
    public class ErrorInterceptor implements Interceptor {
    
        public void init() {
    
        }
    
        public String intercept(ActionInvocation actioninvocation) {
    
            String result = null; // Action的返回值   
            try {
                // 运行被拦截的Action,期间如果发生异常会被catch住   
                result = actioninvocation.invoke();
                return result;
            } catch (Exception e) {
                /**  
                 * 处理异常  
                 */
                String errorMsg = "出现错误信息,请查看日志!";
                //通过instanceof判断到底是什么异常类型   
                if (e instanceof RuntimeException) {
                    //未知的运行时异常   
                    RuntimeException re = (RuntimeException) e;
                    //re.printStackTrace();
                    errorMsg = re.getMessage().trim();
                    System.out.println(errorMsg);
                }
                //把自定义错误信息   
                HttpServletRequest request = (HttpServletRequest) actioninvocation
                        .getInvocationContext().get(StrutsStatics.HTTP_REQUEST);
                /**  
                 * 发送错误消息到页面  
                 */
                request.setAttribute("errorMsg", errorMsg);
    
                /**  
                 * log4j记录日志  
                 */
                Logger log = Logger.getLogger(actioninvocation.getAction().getClass());
                log.error(errorMsg, e);
                return "error";
            }// ...end of catch   
        }
    
        public void destroy() {
    
        }
    }
    package exeception;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class ExceptionAction extends ActionSupport{
        
        public String testException() {
        
            //throw new RuntimeException("hello exception interceptor!!!");
            try {
                int i=1/0;
            } catch (Exception e) {
                System.out.println("测试 11是否执行到这句!!!!");
                throw new RuntimeException("出错了!!");
            }
            return "success";
        }
        
    
    }

  • 相关阅读:
    解剖SQLSERVER 第六篇 对OrcaMDF的系统测试里避免regressions(译)
    Loadrunner参数化连接oracle、mysql数据源报错及解决办法
    JavaScript-Runoob-JS 浏览器BOM :JavaScript Window Screen
    JavaScript-Runoob-JS 浏览器BOM :JavaScript Window
    JavaScript-Runoob-JS 高级教程 :JavaScript RegExp 对象
    JavaScript-Runoob-JS 高级教程 :JavaScript Math
    JavaScript-Runoob-JS 高级教程 :JavaScript Boolean
    JavaScript-Runoob-JS 高级教程 :JavaScript Array
    JavaScript-Runoob-JS 高级教程 :JavaScript Date
    JavaScript-Runoob-JS 高级教程 :JavaScript Number 对象
  • 原文地址:https://www.cnblogs.com/Danial7777777/p/9219608.html
Copyright © 2020-2023  润新知