ETW 跟踪

AnalyticTrace 示例演示如何通过使用 Windows 事件跟踪 (ETW) 和本示例提供的 ETWTraceListener 来实现端对端 (E2E) 跟踪。 本示例基于入门指南,并包括 ETW 跟踪。

注释

本示例的设置过程和生成说明位于本主题末尾。

此示例假定你熟悉 跟踪和消息日志记录

跟踪模型中的每个跟踪源 System.Diagnostics 可以有多个跟踪侦听器,用于确定数据的跟踪位置和跟踪方式。 侦听器的类型定义记录跟踪数据的格式。 下面的代码示例演示如何将侦听器添加到配置。

<system.diagnostics>
    <sources>
        <source name="System.ServiceModel"
             switchValue="Verbose,ActivityTracing"
             propagateActivity="true">
            <listeners>
                <add type=
                   "System.Diagnostics.DefaultTraceListener"
                   name="Default">
                   <filter type="" />
                </add>
                <add name="ETW">
                    <filter type="" />
                </add>
            </listeners>
        </source>
    </sources>
    <sharedListeners>
        <add type=
            "Microsoft.ServiceModel.Samples.EtwTraceListener, ETWTraceListener"
            name="ETW" traceOutputOptions="Timestamp">
            <filter type="" />
       </add>
    </sharedListeners>
</system.diagnostics>

使用此侦听器之前,必须启动 ETW 跟踪会话。 可以使用 Logman.exe 或 Tracelog.exe启动此会话。 此示例中包含 SetupETW.bat 文件,以便你可以设置 ETW 跟踪会话以及用于关闭会话和完成日志文件的 CleanupETW.bat 文件。

注释

本示例的设置过程和生成说明位于本主题末尾。 有关这些工具的详细信息,请参阅 https://go.microsoft.com/fwlink/?LinkId=56580

使用 ETWTraceListener 时,跟踪记录在二进制 .etl 文件中。 启用 ServiceModel 跟踪后,所有生成的跟踪都将显示在同一文件中。 使用 服务跟踪查看器工具(SvcTraceViewer.exe) 查看 .etl 和 .svclog 日志文件。 查看器将创建系统的端到端视图,以便可以将消息从源跟踪到其目标和消耗点。

ETW 跟踪侦听器支持循环日志记录。 若要启用此功能,请转到“开始”、“运行”并键入cmd以启动命令控制台。 在以下命令中,将 <logfilename> 参数替换为日志文件的名称。

logman create trace Wcf -o <logfilename> -p "{411a0819-c24b-428c-83e2-26b41091702e}" -f bincirc -max 1000

-f开关和-max开关是可选的。 它们分别指定二进制循环格式和最大日志大小 1000MB。 该 -p 开关用于指定跟踪提供程序。 在我们的示例中, "{411a0819-c24b-428c-83e2-26b41091702e}" 是“XML ETW 示例提供程序”的 GUID。

若要启动会话,请键入以下命令。

logman start Wcf

完成日志记录后,可以使用以下命令停止会话。

logman stop Wcf

此过程生成二进制循环日志,可以使用所选工具进行处理,包括 服务跟踪查看器工具(SvcTraceViewer.exe) 或 Tracerpt。

还可以查看 循环跟踪 示例,了解有关执行循环日志记录的备用侦听器的详细信息。

设置、生成和运行示例

  1. 请确保您已经为 Windows Communication Foundation 示例执行了 One-Time 设置程序

  2. 要生成解决方案,请按照生成 Windows Communication Foundation 示例中的说明进行操作。

    注释

    若要使用 RegisterProvider.bat、SetupETW.bat 和 CleanupETW.bat 命令,必须在本地管理员帐户下运行。 如果使用 Windows Vista 或更高版本,则还必须使用提升的权限运行命令提示符。 为此,请右键单击命令提示符图标,然后单击“ 以管理员身份运行”。

  3. 在运行示例之前,请在客户端和服务器上运行 RegisterProvider.bat。 这会设置生成的 ETWTracingSampleLog.etl 文件,以生成可由服务跟踪查看器读取的跟踪。 可以在 C:\logs 文件夹中找到此文件。 如果此文件夹不存在,则必须创建它,否则不会生成任何跟踪。 然后,在客户端和服务器计算机上运行 SetupETW.bat 以开始 ETW 跟踪会话。 可以在 CS\Client 文件夹下找到 SetupETW.bat 文件。

  4. 要使用单机配置或跨计算机配置运行示例,请按照运行 Windows Communication Foundation 示例中的说明进行操作。

  5. 完成示例后,请运行 CleanupETW.bat 以完成 ETWTracingSampleLog.etl 文件的创建。

  6. 从服务跟踪查看器中打开 ETWTracingSampleLog.etl 文件。 系统会提示将二进制格式化文件保存为 .svclog 文件。

  7. 从服务跟踪查看器中打开新创建的 .svclog 文件以查看 ETW 和 ServiceModel 跟踪。

另请参阅