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,就实现捕捉异常了

  • 相关阅读:
    C++笔记-智能指针 shared_ptr
    Linux笔记-性能调优工具perf
    git submodule 如何push代码
    性能测试工具gperftools使用
    Linux信号使用及自定义信号
    DNN在推荐系统中的应用参考资料
    vscode远程代码同步
    感知机模型到DNN模型
    c++笔记-libcurl多线程并发时的core【转载】
    go笔记-熔断器
  • 原文地址:https://www.cnblogs.com/a546558309/p/2568732.html
Copyright © 2011-2022 走看看