Net Core集成Exceptionless分布式日志功能以及全局异常过滤

相信很多朋友都看过我的上篇关于Exceptionless的简单入门教程[asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程][https://www.cnblogs.com/yilezhu/p/9193723.html] 上篇文章只是简单的介绍了Exceptionless是什么?能做什么呢?以及怎么进行本地部署和异常提交的简单用法,而这篇文章将带你探讨一下Exceptionless的异常收集高级用法以及你熟悉的类似NLog的日志用法。

这篇文章有一部分内容翻译自官方文档,[点我阅读][https://github.com/exceptionless/Exceptionless.Net/wiki/Sending-Events] 英语好的可以自行阅读 。当然中间很多代码我都进行了重构,还有参考周旭龙的代码,进行了简单地封装,同时加入了为webapi加入异常全局过滤器进行异常日志的记录。希望对大家有所帮助。

本文地址:https://www.cnblogs.com/yilezhu/p/9339017.html
作者:依乐祝

手动发送错误

上篇文章介绍了,导入命名空间后,并使用如下代码就可以简单地提交异常日志:

try {  
 throw new ApplicationException(Guid.NewGuid().ToString()); } catch (Exception ex) {    ex.ToExceptionless().Submit(); }

发送附加信息

当然你还可以为发送的事件添加额外的标记信息,比如坐标,标签,以及其他的用户相关的信息等等

 
   

Net Core集成Exceptionless分布式日志功能以及全局异常过滤_第1张图片

统一修改未处理的异常报告

你可以在通过SubmittingEvent 事件设置全局的忽略异常信息添加一些自定义信息等等


配合使用 NLog 或 Log4Net

有时候,程序中需要对日志信息做非常详细的记录,比如在开发阶段。这个时候可以配合 log4net 或者 nlog 来联合使用 exceptionless,详细可以查看这个官方的 [示例][https://github.com/exceptionless/Exceptionless.Net/tree/master/samples/Exceptionless.SampleConsole]。

如果你的程序中有在短时间内生成大量日志的情况,比如一分钟产生上千的日志。这个时候你需要使用内存存储(in-memory store)事件,这样客户端就不会将事件系列化的磁盘,所以会快很多。这样就可以使用Log4net 或者 Nlog来将一些事件存储到磁盘,另外 Exceptionless 事件存储到内存当中。

Exceptionless 日志记录的封装

  1. 首先简单地封装一个ILoggerHelper接口

Net Core集成Exceptionless分布式日志功能以及全局异常过滤_第2张图片

既然有了接口,那么当然得实现它了

Net Core集成Exceptionless分布式日志功能以及全局异常过滤_第3张图片

  1. 当然实现好了,可别忘了依赖注入哦

 //注入ExceptionlessLogger服务
            services.AddSingleton();
  1. 这时候该写一个全局异常过滤器了

Net Core集成Exceptionless分布式日志功能以及全局异常过滤_第4张图片

  1. 全局过滤器写好了,怎么让它生效呢,客观别急啊,上正菜

      //添加验证
                services.AddMvc(options=> {
                    options.Filters.Add();
                }).AddFluentValidation();
  2. 哈哈,没什么说的了,代码都已经写好了,剩下的就是上代码测试结果了。我这里只是简单地api测试下,万能的ValuesController登场:

Net Core集成Exceptionless分布式日志功能以及全局异常过滤_第5张图片

  1. 这里是直接抛出异常,不进行trycatch,这时候异常会被全局过滤器捕获,然后放到Exceptionless的Log里面,别问我为什么会在log里面,因为我全局过滤器代码里面已经写明了,不明白的回去看代码,然后看接口调用的实现方法。下面上结果:

    Net Core集成Exceptionless分布式日志功能以及全局异常过滤_第6张图片

点进去,看看详细信息:

Net Core集成Exceptionless分布式日志功能以及全局异常过滤_第7张图片

  1. 再测试下使用try catch捕获的异常处理,这时候异常信息会被提交到Exception这个里面。直接上代码吧

Net Core集成Exceptionless分布式日志功能以及全局异常过滤_第8张图片

到exceptionless里面看看不活的异常吧。打字很累直接上图吧

Net Core集成Exceptionless分布式日志功能以及全局异常过滤_第9张图片

点进去看看详细信息,有三个tab,下面之粘贴一个图片了:

Net Core集成Exceptionless分布式日志功能以及全局异常过滤_第10张图片

最后,源码就不上了,因为上面代码很清楚了

总结

本文没有对Exceptionless进行过多地介绍,因为博主的[上篇文章][asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程] 已经进行了详细的介绍。直接切入正题,先对官方高级用法进行了简单地翻译。然后对Exceptionless Log这个eventtype进行了简单地封装,让你可以像使用NLog一样很爽的使用Exceptionless。最后通过一个asp.net core web api的项目进行了演示,在全局过滤器中利用封装的Log方法进行全局异常的捕获。希望对大家使用Exceptionless有所帮助。

原文地址:http://www.infoq.com/cn/news/2018/07/dev-spaces-aks-preview

 
   

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

你可能感兴趣的:(Net Core集成Exceptionless分布式日志功能以及全局异常过滤)