您的位置:首页 > 编程语言 > ASP

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

2020-03-05 04:07 615 查看

一.  异常处理器的使用

 

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());                                                  //将获取到的异常记录下来

 搞定...

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

 

转载于:https://www.cnblogs.com/zkhbalance/p/9066591.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
anpouxi0037 发布了0 篇原创文章 · 获赞 0 · 访问量 50 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: