zoukankan      html  css  js  c++  java
  • Mvc获取ErrMessage,并写入ErrLog日志

    在Mvc里面我们知道有自带的Filter方法,也就是我们说的Aop横向切面编程

    首先自定义 CustomeFilterAttribute类,继承FilterAttribute方法,同时继承IExceptionFilter接口

    (还可以继承 IActionFilter, IAuthorizationFilter  IResultFilter等接口),然后实现OnException方法

    先看代码:

    public class CustomeFilterAttribute : FilterAttribute, IExceptionFilter     {  

           public void OnException(ExceptionContext filterContext)    

         {            

    //ErrLog路径       

          string path = HttpContext.Current.Server.MapPath("/Logs/ErrLogs.txt");    

             //出错时间    

             string ErrTime = DateTime.Now.ToString();       

          //错误类型       

          string ErrType = filterContext.Exception.GetType().ToString();         

        //错误信息       

          string ErrMessage = filterContext.Exception.Message;         

        //引发异常的方法   

              string targetsite = filterContext.Exception.TargetSite.ToString();     

            //引发异常的对象     

            string source = filterContext.Exception.Source.ToString();

                //异常Controller名称       

          string controller = filterContext.RouteData.Values["controller"].ToString();   

              //异常Action名称       

          string action = filterContext.RouteData.Values["action"].ToString();     

            string ErrStr = string.Format("时间:{0} ,错误类型:{0},错误信息:{2},异常的方法:{3},异常的对象:{4},Controller名称:{5},Action名称:{6}", ErrTime, ErrType, ErrMessage, targetsite, source, controller, action);             WriteLog(path, true, ErrStr);  

           }

            private void WriteLog(string path, bool append, string ErrStr)  

           {            

    StreamWriter writer = new StreamWriter(path, append);    

             writer.WriteLine(ErrStr);        

         writer.Flush();       

          writer.Dispose();      

       }  

        }

    现在已经实现写Err的方法了,接下来看如何捕捉Err。

    我们要自定义一个BaseController

      [CustomeFilter]  

       public class BaseController : Controller  

       {        

          public BaseController()      

         {

        }

    }

    然后让所有你写的Controller都继承BaseController,就实现捕捉异常了

  • 相关阅读:
    Python 存储引擎 数据类型 主键
    Python 数据库
    Python 线程池进程池 异步回调 协程 IO模型
    Python GIL锁 死锁 递归锁 event事件 信号量
    Python 进程间通信 线程
    Python 计算机发展史 多道技术 进程 守护进程 孤儿和僵尸进程 互斥锁
    Python 异常及处理 文件上传事例 UDP socketserver模块
    Python socket 粘包问题 报头
    Django基础,Day7
    Django基础,Day6
  • 原文地址:https://www.cnblogs.com/a546558309/p/2568732.html
Copyright © 2011-2022 走看看