Compartilhar via


Registro de mensagem e rastreamento

O exemplo TracingAndLogging demonstra como habilitar o rastreamento e o registro em log de mensagens. Os rastreamentos resultantes e os logs de mensagens são exibidos usando a Ferramenta visualizador de rastreamento de serviço (SvcTraceViewer.exe). Este exemplo é baseado na Introdução.

Observação

O procedimento de instalação e as instruções de compilação dessa amostra estão no final deste tópico.

Rastreamento

O WCF (Windows Communication Foundation) usa o mecanismo de rastreamento definido no namespace System.Diagnostics. Neste modelo de rastreamento, os dados de rastreamento são produzidos por fontes de rastreamento que os aplicativos implementam. Cada fonte é identificada por um nome. Os consumidores de rastreamento criam ouvintes de rastreamento para as fontes de rastreamento para as quais desejam recuperar informações. Para receber dados de rastreamento, você deve criar um ouvinte para a fonte de rastreamento. No WCF, isso pode ser feito adicionando o seguinte código ao arquivo de configuração do serviço ou do cliente definindo a fonte de rastreamento do Modelo de Serviço 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>

Para obter mais informações sobre fontes de rastreamento, consulte a seção Fonte de Rastreamento no tópico Configurar Rastreamento.

Rastreamento e Propagação de Atividades

Ter ActivityTracing habilitado e propagateActivity definido como true nas fontes de rastreamento system.ServiceModel para o cliente e o serviço fornece uma correlação de rastreamentos dentro de unidades lógicas de processamento (atividades), entre atividades dentro de pontos de extremidade (por meio de transferências de atividade) e entre atividades que abrangem vários pontos de extremidade (por meio da propagação da ID da atividade).

Esses três mecanismos (atividades, transferências e propagação) podem ajudá-lo a localizar a causa raiz de um erro mais rapidamente usando a ferramenta Visualizador de Rastreamento de Serviço. Para obter mais informações, consulte Usar o Visualizador de Rastreamento de Serviço para exibir rastreamentos correlacionados e solucionar problemas.

É possível estender o rastreamento fornecido pelo ServiceModel criando rastreamentos de atividade definidos pelo usuário. O rastreamento de atividade definido pelo usuário permite que o usuário crie atividades de rastreamento para:

  • Agrupar rastreamentos em unidades lógicas de trabalho.

  • Correlacionar atividades por meio de transferências e propagação.

  • Diminuir o custo de desempenho do rastreamento WCF (por exemplo, o custo de espaço em disco de um arquivo de log).

Para obter mais informações sobre o rastreamento de atividade definido pelo usuário, consulte o exemplo Estender rastreamento.

Registro em log de mensagens

O log de mensagens pode ser habilitado no cliente e no serviço de qualquer aplicativo WCF. Para habilitar o registro em log de mensagens, você deve adicionar o seguinte código ao cliente ou ao serviço:

<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>

Quando uma mensagem é gravada, o tipo de rastreamento depende se ele está sendo rastreado no cliente ou no servidor. Por exemplo, uma mensagem "Adicionar" enviada a um cliente é rastreada na categoria "TransportWrite" no cliente, enquanto a mesma mensagem é rastreada na categoria "TransportRead" no serviço.

Configure o ouvinte de rastreamento adicionando o seguinte código à seção System.Diagnostics do arquivo App.config do cliente ou ao arquivo Web.config do serviço:

<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>

As mensagens são registradas no formato XML no diretório de destino especificado no arquivo de configuração.

Observação

Os arquivos de rastreamento não são criados sem criar inicialmente o diretório de log. Verifique se o diretório C:\logs\ existe ou especifique um diretório de log alternativo na configuração do ouvinte. Confira as instruções de instalação iniciais no final deste documento para obter mais informações.

Para obter mais informações sobre o log de mensagens, consulte o tópico Configurar o log de mensagens.

Para configurar, compilar, e executar o exemplo

  1. Verifique se você executou as Amostras de Procedimento de Instalação Única para o Windows Communication Foundation.

  2. Antes de executar o exemplo de rastreamento e registro em log de mensagens, crie o diretório C:\logs\ para que o serviço escreva os arquivos .svclog. O nome desse diretório é definido no arquivo de configuração como o caminho para que os rastreamentos e mensagens sejam registrados e possam ser alterados. Dê ao usuário do Serviço de Rede acesso de gravação ao diretório de logs.

  3. Para compilar a edição C#, C++ ou Visual Basic .NET da solução, siga as instruções em Como compilar os exemplos do Windows Communication Foundation.

  4. Para executar o exemplo em uma configuração de computador único ou entre computadores, siga as instruções em Como executar os exemplos do Windows Communication Foundation.

Confira também