跟踪和消息日志记录

TracingAndLogging 示例演示如何启用跟踪和消息日志记录。 使用 服务跟踪查看器工具(SvcTraceViewer.exe)查看生成的跟踪和消息日志。 此示例基于入门指南

注释

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

追踪

Windows Communication Foundation (WCF)使用命名空间中 System.Diagnostics 定义的跟踪机制。 在此跟踪模型中,跟踪数据由应用程序实现的跟踪源生成。 每个源都由一个名称标识。 跟踪使用程序会创建针对要为其检索信息的跟踪源的侦听器。 若要接收跟踪数据,必须为跟踪源创建侦听器。 在 WCF 中,可以通过设置服务模型跟踪源 switchValue将以下代码添加到服务或客户端配置文件来完成此作:

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Information,ActivityTracing"
        propagateActivity="true">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="C:\logs\TracingAndLogging-service.svclog" type="System.Diagnostics.XmlWriterTraceListener"
        name="xml" />
    </sharedListeners>
    <trace autoflush="true" />
</system.diagnostics>

有关跟踪源的详细信息,请参阅 “配置跟踪 ”主题中的“跟踪源”部分。

活动跟踪和传播

在客户端和服务的ActivityTracing跟踪源中启用了propagateActivity并将true设置为system.ServiceModel后,可在处理的逻辑单元(活动)内、终结点内部(通过活动传输)以及跨多个终结点(通过活动 ID 传播)之间提供跟踪关联。

这三种机制(活动、传输和传播)可以帮助你使用服务跟踪查看器工具更快地找到错误的根本原因。 有关详细信息,请参阅 使用服务跟踪查看器查看相关跟踪和故障排除

可以通过创建用户定义的活动跟踪来扩展 ServiceModel 提供的跟踪。 用户定义的活动跟踪允许用户创建跟踪活动,以便执行下列操作:

  • 将跟踪分组到逻辑工作单元。

  • 通过传输与传播来关联活动。

  • 降低 WCF 跟踪的性能成本(例如日志文件的磁盘空间成本)。

有关用户定义的活动跟踪的详细信息,请参阅 “扩展跟踪 ”示例。

消息日志记录

可以在任何 WCF 应用程序的客户端和服务上启用消息日志记录。 若要启用消息日志记录,必须将以下代码添加到客户端或服务:

<configuration>
  <system.serviceModel>
    <diagnostics>
      <!-- Enable Message Logging here. -->
      <!-- log all messages received or sent at the transport or service model levels -->
      <messageLogging logEntireMessage="true"
                      maxMessagesToLog="300"
                      logMessagesAtServiceLevel="true"
                      logMalformedMessages="true"
                      logMessagesAtTransportLevel="true" />
    </diagnostics>
  </system.serviceModel>
</configuration>

记录消息时,跟踪类型取决于它是在客户端还是服务器上进行跟踪。 例如,发送到客户端的“添加”消息在客户端的“TransportWrite”类别下进行跟踪,而同一消息则跟踪在服务的“TransportRead”类别下。

将以下代码添加到客户端的 App.config 文件或服务的 Web.config 文件的 System.Diagnostics 部分中以配置跟踪侦听器:

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Information,ActivityTracing"
        propagateActivity="true">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
        name="xml" />
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>

消息以 XML 格式记录在配置文件中指定的目标目录中。

注释

如果没有最初创建日志目录,则不会创建跟踪文件。 请确保目录 C:\logs\ 存在,或在侦听器配置中指定备用日志记录目录。 有关详细信息,请参阅本文档末尾的初始设置说明。

有关消息日志记录的详细信息,请参阅 “配置消息日志记录 ”主题。

设置、生成和运行示例

  1. 确保已为 Windows Communication Foundation 示例 执行One-Time 安装过程。

  2. 在运行跟踪和消息日志记录示例之前,请为服务创建目录 C:\logs\ 以将 .svclog 文件写入到。 此目录的名称在配置文件中定义为要记录的跟踪和消息的路径,并且可以更改。 向用户授予网络服务对日志目录的写入访问权限。

  3. 若要生成解决方案的 C#、C++ 或 Visual Basic .NET 版本,请按照 生成 Windows Communication Foundation 示例中的说明进行作。

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

另请参阅