我不确定我是否理解使用System.Diagnostics.Tracing和使用System.Diagnostics.Trace的ETW之间的主要区别。我理解,使用它们我可以将事件转储到某些输出流,并且我可以使用各种侦听器来拦截这些数据 - 包括自定义侦听器。
但除了ETW的基础设施嵌入Windows并且我可以开箱即用WPR和PerfView这一事实外,我看不出有什么区别。
我何时会选择其中一个?
答案 0 :(得分:2)
System.Diagnostics.Tracing
比Trace
更完整:
另一方面,System.Diagnostic.Trace
是一个简单的记录器:您只能记录字符串,并且不能应用任何类型的过滤(它可以为所有消息启用,也可以对所有消息禁用)。但它的优点是Visual Studio调试器默认支持(因此当您附加到进程时,您可以直接在输出窗口中看到跟踪事件)。
我补充一点,提供开箱即用的ETW监听器是System.Diagnostics.Tracing
的好处,但从技术上讲,没有什么能阻止你为Trace
编写自己的ETW监听器。< / p>