Compartilhar via


Estender o rastreamento

O exemplo ExtendingTracing demonstra como estender o recurso de rastreamento do Windows Communication Foundation (WCF) escrevendo rastreamentos de atividade definidos pelo usuário no código do cliente e do serviço. Escrever rastreamentos de atividade definidos pelo usuário permite que o usuário crie atividades de rastreamento e agrupe rastreamentos em unidades lógicas de trabalho. Também é possível correlacionar atividades por meio de transferências (dentro do mesmo ponto de extremidade) e propagação (entre pontos de extremidade). Neste exemplo, o rastreamento está habilitado para o cliente e o serviço. Para obter mais informações sobre como habilitar o rastreamento em arquivos de configuração de cliente e serviço, consulte Rastreamento e registro em log de mensagens.

Este exemplo é baseado na Introdução.

Observação

Os procedimentos de instalação e as instruções de compilação para esse exemplo estão localizadas no final deste tópico.

Rastreamento e Propagação de Atividades

O rastreamento de atividades definido pelo usuário permite que o usuário crie suas próprias atividades de rastreamento para agrupar rastreamentos em unidades lógicas de trabalho, correlacionar atividades por meio de transferências e propagação e diminuir o custo de desempenho do rastreamento WCF (por exemplo, o custo de espaço em disco de um arquivo de log ).

Adicionar fontes personalizadas

Os rastreamentos definidos pelo usuário podem ser adicionados ao código do cliente e do serviço. A adição de origens de rastreamento aos arquivos de configuração de cliente ou de serviço permite que esses rastreamentos personalizados sejam registrados e exibidos na Ferramenta Visualizador de rastreamento de serviço (SvcTraceViewer.exe). O código a seguir mostra como adicionar uma fonte de rastreamento definida pelo usuário nomeada ServerCalculatorTraceSource ao arquivo de configuração.

<system.diagnostics>
    <sources>
        <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">
            <listeners>
                <add type="System.Diagnostics.DefaultTraceListener" name="Default">
                    <filter type="" />
                </add>
                <add name="xml">
                    <filter type="" />
                </add>
            </listeners>
        </source>
        <source name="ServerCalculatorTraceSource" switchValue="Information,ActivityTracing">
            <listeners>
                <add type="System.Diagnostics.DefaultTraceListener" name="Default">
                    <filter type="" />
                </add>
                <add name="xml">
                    <filter type="" />
                </add>
            </listeners>
        </source>
    </sources>
    <sharedListeners>
       <add initializeData="C:\logs\ServerTraces.svclog" type="System.Diagnostics.XmlWriterTraceListener"
        name="xml" traceOutputOptions="Callstack">
            <filter type="" />
        </add>
    </sharedListeners>
    <trace autoflush="true" />
</system.diagnostics>
....

Correlacionar atividades

Para correlacionar atividades diretamente entre pontos de extremidade, o atributo propagateActivity deve ser definido como true na origem de rastreamento System.ServiceModel. Além disso, para propagar rastreamentos sem passar por atividades do WCF, o Rastreamento de Atividade ServiceModel deve ser desativado. Isso pode ser visto no código de exemplo a seguir.

Observação

Desativar o Rastreamento de Atividade ServiceModel não é o mesmo que ter o nível de rastreamento, indicado pela propriedade switchValue, definido como desativado.

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">

    ...

       </source>
    </sources>
</system.diagnostics>

Reduzir o custo de desempenho

Definir ActivityTracing como desativado na origem de rastreamento System.ServiceModel gera um arquivo de rastreamento que contém apenas rastreamentos de atividade definidos pelo usuário, sem nenhum rastreamento de atividade ServiceModel incluído. A exclusão de rastreamentos de atividade do ServiceModel resulta em um arquivo de log muito menor. No entanto, a oportunidade de correlacionar rastreamentos de processamento do WCF é perdida.

Configurar, compilar e executar o exemplo

  1. Verifique se você executou o Procedimento de instalação única para os exemplos do Windows Communication Foundation.

  2. Para compilar a edição .NET do C# ou do Visual Basic da solução, siga as instruções contidas em Como Compilar as Amostras do Windows Communication Foundation.

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

Confira também