Partilhar via


Rastreamento e registro de mensagens

O exemplo TracingAndLogging demonstra como habilitar o rastreamento e o registro de mensagens. Os rastreamentos e logs de mensagens resultantes são exibidos usando a ferramenta Service Trace Viewer Tool (SvcTraceViewer.exe). Este exemplo é baseado em Introdução.

Nota

O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.

Rastreio

O Windows Communication Foundation (WCF) usa o mecanismo de rastreamento definido no System.Diagnostics namespace. Nesse 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 switchValuede rastreamento do modelo de 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-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 Origem de rastreamento no tópico Configurando o rastreamento .

Rastreamento e propagação de atividades

Tendo ActivityTracing habilitado e propagateActivity definido como true nas system.ServiceModel fontes de rastreamento para o cliente e o serviço, forneça 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 atividades) e entre atividades que abrangem vários pontos de extremidade (por meio da propagação de ID de 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 Usando o Service Trace Viewer para exibir rastreamentos correlacionados e solução de problemas.

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

  • Agrupar traços em unidades lógicas de trabalho.

  • Correlacione atividades através de transferências e propagação.

  • Reduza 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 de rastreamento de extensão .

Registo de Mensagens

O log de mensagens pode ser habilitado no cliente e no serviço de qualquer aplicativo WCF. Para habilitar o log de mensagens, você deve adicionar o seguinte código ao cliente ou 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 ela está sendo rastreada no cliente ou no servidor. Por exemplo, uma mensagem "Adicionar" que é 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 à System.Diagnostics seção 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 em formato XML no diretório de destino especificado no arquivo de configuração.

Nota

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. Consulte as instruções de configuração inicial no final deste documento para obter mais informações.

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

Para configurar, compilar e executar o exemplo

  1. Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.

  2. Antes de executar o exemplo de Rastreamento e Log de Mensagens, crie o diretório C:\logs\ para o serviço gravar os arquivos .svclog. O nome desse diretório é definido no arquivo de configuração como o caminho para os rastreamentos e mensagens a serem registrados e podem ser alterados. Conceda ao usuário acesso de gravação do Serviço de Rede ao diretório de logs.

  3. Para criar a edição C#, C++ ou Visual Basic .NET da solução, siga as instruções em Criando 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 Executando os exemplos do Windows Communication Foundation.

Consulte também