为什么使用ETW而不是EventLog,反之亦然?

时间:2012-03-08 00:09:23

标签: .net event-log etw

为什么我应该使用Event Tracing for Windows (ETW)而不是标准.NET EventLog class,反之亦然?知道我们将使用相当多的性能计数器会影响决策吗?

到目前为止我所知道的:

  1. ETW应该perform much better
  2. ETW需要更多工作(例如.NET Event Tracing for Windows
  3. 通过选择ETW中的一个标准通道(例如应用程序,系统),事件日志中提供了相同的信息。

2 个答案:

答案 0 :(得分:13)

ETW有很多优点。

首先,在.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表存储),并通过设置控制系统日志过滤器和记录详细程度。