为什么我应该使用Event Tracing for Windows (ETW)而不是标准.NET EventLog class,反之亦然?知道我们将使用相当多的性能计数器会影响决策吗?
到目前为止我所知道的:
答案 0 :(得分:13)
首先,在.NET 4.5中,使用它会简单得多。 4.5中的EventSource类极大地简化了在代码中创建事件的过程。
然而,即使没有这个,ETW也有一些巨大的优势,虽然它通常的工作方式不同,因此,它的目的与EventLog不同。
EventLog真的是专为日志记录而设计的。另一方面,ETW允许您在整个系统的上下文中跟踪应用程序的进度。当您开始收集ETW事件时,您可以在系统的基础上收集它们,这样您不仅可以跟踪应用程序,还可以查看系统运行时发生的情况。通过使用PerfView之类的工具,您可以看到应用程序的特定部分如何运作,同时了解框架和Windows整体发生的情况。
答案 1 :(得分:4)
这MSDN article很好地描述了ETW的好处。
虽然EventSource为.NET开发人员编写ETW事件提供了一种很好的惯用方法,但它没有任何熟悉的日志记录目标(滚动文件,数据库等)。 ETW使用自己的目标,例如.etl文件,并使用不同的工具来解析和分析日志数据。
新的Semantic Logging Application Block可以更轻松地合并EventSource功能并管理系统的日志记录行为。它可以从ETW管道继承大部分结构(包括事件元数据和有效负载),将日志消息写入多个目标(如数据库,滚动文件或Windows Azure表存储),并通过设置控制系统日志过滤器和记录详细程度。