zoukankan      html  css  js  c++  java
  • MVC小系列(十三)【全局异常处理与异常日志】

    在MVC网站的global.asax中的Application_Start方法里,有这样一段代码 

       protected void Application_Start()
            {
                //它的主要作用是将全局过滤器进行注册,而全局过滤器可以在RegisterGlobalFilters这个方法里进行设置
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                AreaRegistration.RegisterAllAreas();
                WebApiConfig.Register(GlobalConfiguration.Configuration); 
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
                AuthConfig.RegisterAuth();
            }

    第一步:开发异常持久化类:

         /// <summary>
        /// 异常持久化类
        /// </summary>
        public class ExceptionLogAttribute : HandleErrorAttribute
        {
            /// <summary>
            /// 触发异常时调用的方法
            /// </summary>
            /// <param name="filterContext"></param>
            public override void OnException(ExceptionContext filterContext)
            {
    
                string message = string.Format("消息类型:{0}<br>消息内容:{1}<br>引发异常的方法:{2}<br>引发异常的对象:{3}<br>异常目录:{4}<br>异常文件:{5}"
                    , filterContext.Exception.GetType().Name
                    , filterContext.Exception.Message
                    , filterContext.Exception.TargetSite
                    , filterContext.Exception.Source
                    , filterContext.RouteData.GetRequiredString("controller")
                    , filterContext.RouteData.GetRequiredString("action"));
                // VLog.VLogFactory.CreateVLog().ErrorLog(message); //TODO:将 ex 错误对象记录到系统日志模块
                base.OnException(filterContext);
            }
        }

    第二步:将异常放进过滤器里

      public class FilterConfig
        {
            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                // ExceptionLogAttribute继承自HandleError,主要作用是将异常信息写入日志系统中
                filters.Add(new ExceptionLogAttribute());
                ////默认的异常记录类
                filters.Add(new HandleErrorAttribute());
            }
        }
  • 相关阅读:
    JS---数组(Array)处理函数整理
    xStream完美转换XML、JSON
    DD_belatedPNG解决IE6下PNG不透明问题
    转 DataTorrent 1.0每秒处理超过10亿个实时事件
    转 Apache Kafka:下一代分布式消息系统
    Selenium(ThoughtWorks公司开发的web自动化测试工具)
    oracle 拆分字符串并转换为表
    C# winform 使用DsoFramer 创建 显示office 文档
    visual studio 2014 新特性
    转 管线开发
  • 原文地址:https://www.cnblogs.com/niuzaihenmang/p/5625875.html
Copyright © 2011-2022 走看看