zoukankan      html  css  js  c++  java
  • MVC自定义错误日志异常处理

    MVC添加错误日志处理模块很简单,只要写个继承自HandleErrorAttribute的过滤器,重新OnException方法,贴个异常处理代码如下:

       public class ExceptionAttribute : HandleErrorAttribute
        {
            private static Logger logger = new Logger(typeof(ExceptionAttribute));
            public override void OnException(ExceptionContext filterContext)
            {
                if (!filterContext.ExceptionHandled)
                {
                    string controllerName = (string)filterContext.RouteData.Values["controller"];
                    string actionName = (string)filterContext.RouteData.Values["action"];
                    string msgTemplate = "在执行 controller[{0}] 的 action[{1}] 时产生异常";
                    Exception ex = filterContext.Exception;
    
                    logger.Error(msgTemplate, ex);
                }
    
                if (filterContext.Result is JsonResult)
                {
                    //当结果为json时,设置异常已处理
                    filterContext.ExceptionHandled = true;
                }
                else
                {
                    var routingData = filterContext.RequestContext.RouteData;
                    var area = routingData.DataTokens["area"];
                    if (area != null && area.ToString() == "Admin")
                    {
                        filterContext.Result = new RedirectResult("/Admin/Error/Error");//后台管理错误页面
                    }
                    else
                    {
                        filterContext.Result = new RedirectResult("/Error/Error");//前端错误页面 前端移动端 所有要后后台错误页区分
                    }
                    filterContext.ExceptionHandled = true;
                    ////否则调用原始设置
                    //base.OnException(filterContext);
                }
            }
        }

    使用的是log4net记录日志,然后在全局过滤器里注册一下就可以了(App_Start文件夹下的FilterConfig),注册代码如下:

     public class FilterConfig
        {
            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                //将自己定义的异常过滤器注册为全局过滤器。(全局过滤器是可以注册多个的)  
                filters.Add(new ExceptionAttribute());
                filters.Add(new HandleErrorAttribute());
               
            }
        }

    OK 搞定日志模块  简单吧

  • 相关阅读:
    Hibernate中的一对一注解配置
    Hibernate=====HQL实用技术
    Hibernate中的session的线程安全问题
    初学orcale(一)
    initBinder转换日期格式
    poi学习
    jqueryUI学习
    JavaScript中node的相关属性
    JavaScript函数的调用(通过节点)--JavaScript DOM编程艺术
    DOM中的四种方法--Javascript DOM编程艺术
  • 原文地址:https://www.cnblogs.com/marshhu/p/7542104.html
Copyright © 2011-2022 走看看