Partilhar via


Estender o rastreamento

O exemplo ExtendingTracing demonstra como estender o recurso de rastreamento do Windows Communication Foundation (WCF) gravando 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 endpoint) e propagação (entre endpoints). 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 de mensagens.

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.

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

Rastreamentos definidos pelo usuário podem ser adicionados ao código do cliente e do serviço. Adicionar fontes de rastreamento aos arquivos de configuração do cliente ou do 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 propagateActivity atributo deve ser definido como true na fonte de System.ServiceModel rastreamento. Além disso, para propagar rastreamentos sem passar pelas atividades do WCF, o ServiceModel Activity Tracing deve ser desativado. Isso pode ser visto no exemplo de código a seguir.

Nota

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

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

    ...

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

Diminuir o custo de desempenho

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

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

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