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

15
我应该使用Windows事件跟踪(ETW)还是标准的.NET EventLog类,反之亦然?知道我们将使用相当多的性能计数器会影响决策吗?
我目前所知:
  1. ETW应该表现更好
  2. 集成ETW需要更多的工作(例如.NET事件跟踪Windows
  3. 通过选择ETW中的一个标准通道(例如Application、System),事件日志中可用的信息相同。
2个回答

15

ETW具有许多优势。

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

即使没有这个功能,ETW仍然具有一些巨大的优势,尽管它通常工作方式不同,因此与EventLog服务于不同的目的。

EventLog真正是用于日志记录的。另一方面,ETW允许您跟踪应用程序在整个系统上的进展情况。当您开始收集ETW事件时,您会在系统基础上进行收集,这不仅可以跟踪您的应用程序,还可以查看在运行时与系统相关的情况。通过使用PerfView等工具,您可以同时查看应用程序特定部分的操作,同时查看框架和Windows作为整体发生的情况。


4
这篇MSDN文章很好地介绍了ETW的好处。
虽然EventSource为.NET开发人员提供了编写ETW事件的好方法,但它并没有任何熟悉的日志记录目的地(如滚动文件、数据库等)。ETW使用自己的目的地,如.etl文件,并使用不同的工具来解析和分析日志数据。
新的语义化日志应用程序块使得更容易整合EventSource功能,并管理系统的日志记录行为。它可以继承大部分ETW管道的结构,包括事件元数据和有效载荷,将日志消息写入多个目标(如数据库、滚动文件或Windows Azure表存储),并通过设置过滤器和日志详细程度来控制系统的日志记录内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接