一. 异常处理器的使用
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()); //将获取到的异常记录下来
搞定...
菜鸟第一次写博客,字体这些也不知道多大合适,刚开始截图的代码就凑合看吧...
asp.net mvc中捕获异常和使用log4net日志记录组件
原文地址:https://www.cnblogs.com/zkhbalance/p/9066591.html