事件源与事件提供者

Fal*_*ine 5 .net c# etw event-viewer

EventSourceEventProvider类之间的主要区别是什么?

我理解这两个类都是 ETW 的事件提供程序。如果两者之间没有关键差异,那么利弊是什么。

我使用 EventSource 类只是因为我在网上找到了更多示例/文档,而且实现通道支持似乎更直接(写入事件查看器中的默认通道 - 管理、操作、分析和调试),因为 EventRegister 类会自动创建清单(在此处描述)。

Tom*_*mer 5

在 .NET 3.5 中,该类EventProvider是使用 ETW 进行跟踪的唯一选项。正如文档所述,您必须为自定义事件创建一个 Instrumentation Manifest 文件,该文件描述消息中的数据类型。这不是一件容易的任务,它需要使用单独的工具,例如清单生成器 (ecmangen.exe)。欲了解更多信息,请参阅这篇文章

该类EventSource是在 .NET 4.5 中添加的,它引入了一种更简单的方法来使用 ETW 编写您自己的事件。系统不会创建这些清单文件,而是自动为您创建它们,从而节省了开销。

EventProvider鉴于上述情况,我看不出任何使用的理由。正如您所提到的,EventSource它有更多文档且更易于使用。