首页 > 解决方案 > 使用 LINQPad 5 + TX (LINQ to Traces) 使用服务结构本地集群 ETW 事件的指南?

问题描述

我正在尝试查看在调试本地服务结构集群时显示在“诊断事件”选项卡中的相同消息。直接,或者在它们被保存到 etl 文件之后。

我使用服务结构有状态服务模板时创建的 ServiceEventSource 类发送了自定义日志消息。在调试模式下运行服务时,我可以在诊断事件选项卡中清楚地看到日志消息。

我曾尝试使用 LinqPad,这很好,但我似乎无法 A)找到会话的名称,或 B)在调试我的服务结构服务时找到任何 .etl 文件的保存位置。我还尝试使用 PerfView 来捕获和创建 .etl 文件。我将“机器范围”用于聚焦过程并将 etl 数据发送到我的桌面。我保留了默认的 500mb 文件,在 Visual Studio 诊断事件选项卡中看到消息之前我没有点击该文件。然后我停止了 PerfView,将 .etl 文件加载到能够解析的 LinqPad 中,但我找不到诊断事件选项卡中显示的任何事件。不过,我确实看到了很多系统范围的消息——所以 PerfView 确实收集了一些东西。

我希望使用 LinqPad 和 TX 扩展来收集事件数据,或流式传输(理想情况下)。但是我是 ETW 的新手,我不清楚如何设置流,或收集数据并将其保存到 .etl 文件中。

标签: localazure-service-fabriclinqpadetw

解决方案


我能够收集到这些数据。使用 PerfView 时,我可以过滤“其他提供者”。我发现通过“提供者浏览器”搜索时没有找到与我的项目匹配的提供者的名称。但是,我手动键入了提供者的名称,该名称是在继承自 EventSource: 的类中找到的[EventSource(Name = "My.Provider.Name.Here")]。在开始收集、运行应用程序并检查结果后,我发现我的日志消息被收集了。也许这些信息会帮助另一个试图做同样事情的人。


推荐阅读