前言 DiagnosticSource是一个非常有意思的且非常有用的API,对于这些API它们允许不同的库发送命名事件,并且它们也允许应用程序订阅这些事件并处理它们,它使我们的消费者可以在运行时动态发现数据源并且订阅与其相关的数据源。 DiagnosticSource在AspNetCore、Enti ...
转载 2021-05-05 22:24:59
206阅读
2评论
前言    近期由于需要进行分布式链路跟踪系统的技术选型,所以一直在研究链路跟踪相关的框架。作为能在.Net Core中使用的APM,SkyWalking自然成为了首选。SkyAPM-dotnet是SkyWalking在.Net Core端的探针实现,其主要的收集日志的手段就是基于DiagnosticSource来进行诊断跟踪的。不得不说SkyAPM-dotnet的设计还是非常优秀的,它本身定义了
原创 2021-02-23 18:08:08
430阅读
https://mp.weixin.qq.com/s/stRWiUvq__bGEht_PZuNag 针对活动的跟踪可反映完整的调用链信息,通过《.NET Core的诊断日志[9]:针对EventSource的跟踪日志[补充]》的介绍我们知道针对TraceSource和EventSource的日志框架都提供了针对活动的跟踪的支持,基于DiagnosticSource的日志框架也不例外。在介绍  Di
转载 2021-06-02 19:35:49
143阅读
https://mp.weixin.qq.com/s/4Se1FEMqZFiwtjzWjo_Dhw01解决的问题为了降低日志事件发布者和订阅者之间的耦合度,日志事件的内容负载很多情况下都会采用匿名类型对象来表示,所以对于《.NET Core的诊断日志[2]:各种诊断日志体验[下篇]》和《上篇]提供的实例中,我们只有采用dynamic关键字将负载对象转换成动态类型后才能提取出所需的成员。由于匿名类型
转载 2021-06-02 19:36:33
165阅读
01标准的观察者模式日志框架应该算是观察者模式(或者发布订阅模式)作为典型的应用了,上面介绍的基于TraceSource和EventSource的日志框架无一不是采用这种模式,基于DiagnosticSource的诊断日志框架也不例外。可以说观察者模式在基于DiagnosticSource的诊断日志框架中应用得更为标准,因为作为日志事件的发布者和订阅者类型需要显式实现IObservable<
转载 2021-06-02 19:37:25
287阅读
https://mp.weixin.qq.com/s/w67K0Xe0fTWLcpQzSnpsuQ 01调试日志我们在本篇文章中会介绍4种典型的诊断日志记录手段,由于写入日志的对象分别为Debugger、TraceSource、DiagnosticSource和EventSource(这些类型都定义在“System.Diagnostics” 命名空间下),所以我们不妨姑且对应的日志形式称为调试日志
转载 2021-06-02 19:49:56
304阅读
前言    在日常使用ASP.NET Core的开发或学习中,如果有需要使用链路跟踪系统,大多数情况下会优先选择SkyAPM。我们之前也说过SkyAPM设计确实比较优秀,巧妙的利用DiagnosticSource诊断跟踪日志,可以做到对项目无入侵方式的集成。其实还有一款比较优秀的链路跟踪系统,也可以支持ASP.NET Core,叫Zipkin。它相对于SkyWalking来说相对轻量级,使用相对来
原创 2021-02-23 18:06:18
736阅读