一. 异常处理器的使用
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>
书写具体配置
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=""Logs_"yyyyMMdd".txt"" /> 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="
----------------------header--------------------------
" /> 21 <param name="Footer" value="
----------------------footer--------------------------
" /> 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>
这段代码也是找的别人的,应该够全了吧
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); } } }); }
以上代码中
log4net.Config.XmlConfigurator.Configure(); //读取log4net文件
ILog logger = LogManager.GetLogger("errorMsg"); //errorMsg是日志的名字
logger.Error(ex.ToString()); //将获取到的异常记录下来
搞定...
菜鸟第一次写博客,字体这些也不知道多大合适,刚开始截图的代码就凑合看吧...