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 文件,您可以和 CleanupETW.bat 文件一起使用此文件来设置 ETW 跟踪会话,以便关闭会话并完成日志文件。

注意

本主题的最后介绍了此示例的设置过程和生成说明。 有关这些工具的详细信息,请参阅 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 开关是可选的。 它们分别指定二进制循环格式和 1000 MB 的最大日志大小。 -p 开关用于指定跟踪提供程序。 在我们的示例中,"{411a0819-c24b-428c-83e2-26b41091702e}" 是“XML ETW 示例提供程序”的 GUID。

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

logman start Wcf

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

logman stop Wcf

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

你也可以查看循环跟踪示例,了解有关用于执行循环记录的替代侦听器的更多信息。

设置、生成和运行示例

  1. 请确保已执行 Windows Communication Foundation 示例的一次性安装过程

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

    注意

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

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

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

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

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

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

另请参阅