14

为什么我应该在标准的 .NET EventLog 类上使用Windows 事件跟踪 (ETW),反之亦然?知道我们将使用相当多的性能计数器会影响决策吗?

到目前为止我所知道的:

  1. ETW 应该表现得更好
  2. ETW 需要集成更多的工作(例如.NET Event Tracing for Windows
  3. 通过选择 ETW 中的标准通道之一(例如应用程序、系统),事件日志中会提供相同的信息。
4

2 回答 2

14

ETW 有很多优点。

首先,在 .NET 4.5 中,它的使用会简单得多。4.5 中的EventSource类极大地简化了从代码中创建事件的过程。

然而,即使没有这个,ETW 也有一些巨大的优势,尽管它的工作方式通常不同,因此与 EventLog 的用途不同。

EventLog真的是为记录而设计的。另一方面,ETW 允许您在整个系统的上下文中跟踪应用程序的进度。当您开始收集 ETW 事件时,您会在系统基础上收集它们,这不仅可以让您跟踪您的应用程序,还可以在系统运行时查看与系统相关的情况。通过使用PerfView之类的工具,您可以查看应用程序的特定部分如何运行,同时查看框架和整个 Windows 发生的情况。

于 2012-03-08T00:13:29.690 回答
4

这篇MSDN 文章很好地描述了 ETW 的好处。

虽然 EventSource 为 .NET 开发人员编写 ETW 事件提供了一种很好的惯用方式,但它没有提供任何熟悉的日志记录目的地(滚动文件、数据库等)。ETW 使用自己的目标,例如 .etl 文件,并使用不同的工具来解析和分析日志数据。

新的语义日志记录应用程序块使合并 EventSource 功能和管理系统的日志记录行为变得更加容易。它可以从 ETW 管道继承大部分结构,包括事件元数据和有效负载,将日志消息写入多个目标,例如数据库、滚动文件或 Windows Azure 表存储,并通过设置来控制系统日志的内容过滤器和日志记录的详细程度。

于 2013-02-20T19:40:21.940 回答