.NET Core中有一些用于跟踪和分布式跟踪的新类。在此处查看降价文档:
https://github.com/dotnet/corefx/tree/master/src/System.Diagnostics.DiagnosticSource/src
作为应用程序开发人员,我们应该使用DiagnosticListener
实例在代码中检测事件,例如销售或库存消耗等,然后将消息订阅并路由到某些度量标准存储,或者允许诸如Application Insights之类的工具来自动订阅并将这些事件推送到AI云?
OR
我们是否应该创建自己的收集抽象的指标并“按常规”将其注入/向下流进栈,并假装我从未见过DiagnosticListener
?
我也有类似的需要将“健康事件”发布到Service Fabric,我还可以使用散布在周围的DiagnosticListener
实例来解决(抽象)。
答案 0 :(得分:0)
DiagnosticListener
旨在使库/应用程序与跟踪系统脱钩:即,任何库都可以使用DiagnosticSource`来通知任何消费者有关有趣的操作。
跟踪系统可以动态订阅此类事件并获取有关该操作的大量信息。
如果您开发应用程序并使用支持DiagnostiListener
的跟踪系统,例如在ApplicationInsights中,您可以使用DiagnosticListener
来使代码与跟踪系统脱钩,也可以直接使用其API。后者效率更高,因为没有额外的适配器可以将您的DS事件转换为AppInsights /其他跟踪系统事件。您还可以更轻松地微调这些事件。
如果您实际上想要此抽象层,则前者更好。
您可以将AI配置为使用任何DiagnosticListener
(通过指定includedDiagnosticSourceActivities)。
如果您编写一个库并希望依赖平台上的可用内容,以便任何应用程序都可以使用它而不会带来新的额外依赖关系,那么DiagnosticListener
是您的最佳选择。
还要考虑跟踪和度量标准收集是不同的,所以跟踪要重得多,并且不进行任何汇总。如果您只需要自定义指标/事件而没有进/出过程相关性,则建议直接使用跟踪系统API。