【问题标题】:Why use ETW over EventLog and vice versa?为什么在 EventLog 上使用 ETW,反之亦然?
【发布时间】:2012-03-25 13:12:10
【问题描述】:

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

到目前为止我所知道的:

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

【问题讨论】:

    标签: .net event-log etw


    【解决方案1】:

    ETW 有很多优点。

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

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

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

    【讨论】:

      【解决方案2】:

      MSDN article 很好地描述了 ETW 的好处。

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

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

      【讨论】:

        猜你喜欢
        • 2012-09-29
        • 1970-01-01
        • 2017-04-09
        • 2020-08-19
        • 2011-04-01
        • 2015-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多