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。
还可以查看 循环跟踪 示例,了解有关执行循环日志记录的备用侦听器的详细信息。
设置、生成和运行示例
- 请确保您已经为 Windows Communication Foundation 示例执行了 One-Time 设置程序。 
- 要生成解决方案,请按照生成 Windows Communication Foundation 示例中的说明进行操作。 - 注释 - 若要使用 RegisterProvider.bat、SetupETW.bat 和 CleanupETW.bat 命令,必须在本地管理员帐户下运行。 如果使用 Windows Vista 或更高版本,则还必须使用提升的权限运行命令提示符。 为此,请右键单击命令提示符图标,然后单击“ 以管理员身份运行”。 
- 在运行示例之前,请在客户端和服务器上运行 RegisterProvider.bat。 这会设置生成的 ETWTracingSampleLog.etl 文件,以生成可由服务跟踪查看器读取的跟踪。 可以在 C:\logs 文件夹中找到此文件。 如果此文件夹不存在,则必须创建它,否则不会生成任何跟踪。 然后,在客户端和服务器计算机上运行 SetupETW.bat 以开始 ETW 跟踪会话。 可以在 CS\Client 文件夹下找到 SetupETW.bat 文件。 
- 要使用单机配置或跨计算机配置运行示例,请按照运行 Windows Communication Foundation 示例中的说明进行操作。 
- 完成示例后,请运行 CleanupETW.bat 以完成 ETWTracingSampleLog.etl 文件的创建。 
- 从服务跟踪查看器中打开 ETWTracingSampleLog.etl 文件。 系统会提示将二进制格式化文件保存为 .svclog 文件。 
- 从服务跟踪查看器中打开新创建的 .svclog 文件以查看 ETW 和 ServiceModel 跟踪。