• asp.net mvc中捕获异常和使用log4net日志记录组件 zkh


    一.  异常处理器的使用

    1.在asp.net mvc中的FilterConfig中定义了全局的异常处理

    2.上图的异常处理器,可以在web.config文件中激活

    3.当然我们也可以自定义一个异常处理器,让它继承HandleErrorAttribute,去重写OnException方法

    4.异常处理器定义好了,接下来就要将定义的异常处理器注册给filter

    这样就大功告成了

    二  log4net日志记录组件的使用

    1.首先 还是引入dll文件

    2.书写配置文件

    先在<configuration>下<configSections>中配置log4net节点

    1 <configSections>
    2 <!--配置log4net节点-->
    3     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    4 </configSections>
    View Code

    书写具体配置

     1 <log4net>
     2     <!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
     3     <!-- Set root logger level to ERROR and its appenders -->
     4     <root>
     5       <level value="ALL" />
     6       <appender-ref ref="SysAppender" />
     7     </root>
     8     <!-- Print only messages of level DEBUG or above in the packages -->
     9     <logger name="WebLogger">
    10       <level value="DEBUG" />
    11     </logger>
    12     <appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">  <!--输出到文件-->
    13       <param name="File" value="App_Data/" />
    14       <param name="AppendToFile" value="true" />
    15       <param name="RollingStyle" value="Date" />
    16       <param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />
    17       <param name="StaticLogFileName" value="false" />
    18       <layout type="log4net.Layout.PatternLayout,log4net">
    19         <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
    20         <param name="Header" value="&#xD;&#xA;----------------------header--------------------------&#xD;&#xA;" />
    21         <param name="Footer" value="&#xD;&#xA;----------------------footer--------------------------&#xD;&#xA;" />
    22       </layout>
    23     </appender>
    24     <appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net"> <!--输出到控制台-->
    25       <layout type="log4net.Layout.PatternLayout,log4net">
    26         <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
    27       </layout>
    28     </appender>
    29   </log4net>
    View Code

    这段代码也是找的别人的,应该够全了吧

    3.配置文件写好了,那就该将捕捉到的异常信息记录下来了

      protected void Application_Start()
            {
                log4net.Config.XmlConfigurator.Configure();  //读取log4net文件
    
                AreaRegistration.RegisterAllAreas();
    
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
    
                //开启一个线程 
                //读取异常队列 
                //异常队列中有异常 使用log4net记录下来
                //异常队列中没有异常 线程睡一会儿
                ThreadPool.QueueUserWorkItem((state)=> {
                    //拿到线程后 读取异常队列
                    while (true) {
                        if (MyExceptionFilter.exQueue.Count>0) {
                            Exception ex = MyExceptionFilter.exQueue.Dequeue();
                            if (ex != null)
                            {
                                ILog logger = LogManager.GetLogger("errorMsg");
                                logger.Error(ex.ToString());
                            }
                            else
                            {
                                Thread.Sleep(3000);
                            }
                        }  
                        else {
                            Thread.Sleep(3000);
                        }
                    }
                });
            }
    View Code

    以上代码中 

    log4net.Config.XmlConfigurator.Configure();                       //读取log4net文件

    ILog logger = LogManager.GetLogger("errorMsg");            //errorMsg是日志的名字

    logger.Error(ex.ToString());                                                  //将获取到的异常记录下来

     搞定...

    菜鸟第一次写博客,字体这些也不知道多大合适,刚开始截图的代码就凑合看吧...

  • 相关阅读:
    DeepEarth更新到Silverlight 4了
    Silverlight & Blend动画设计系列八:拖放(DragDrop)操作与拖放行为(DragBehavior)
    VS2010之vb.net:细节决定成败
    iVIEW: An Intelligent Video over InternEt and Wireless Access System
    Tianya Doc
    治疗咳嗽
    一个 研究 可视化的个人博客
    Windows自启动方式完全总结
    JAVA连接DB2
    JSP 与 Discuz整合
  • 原文地址:https://www.cnblogs.com/zkhbalance/p/9066591.html
Copyright © 2020-2023  润新知