Compartilhar via


Estender TraceProcessor

Muitos tipos de dados de rastreamento têm suporte interno no TraceProcessor, mas se você tiver outros provedores que gostaria de analisar (incluindo seus próprios provedores personalizados), esses dados também estão disponíveis no rastreamento ao vivo durante o processamento.

Observação

Essa parte da API está em versão prévia e em desenvolvimento ativo. Ele pode mudar em versões futuras.

Por exemplo, aqui está uma maneira simples de obter a lista de IDs de provedores em um rastreamento.

// Open a trace with TraceProcessor.Create() and call Run...

static void Run(ITraceProcessor trace)
{
    HashSet<Guid> providerIds = new HashSet<Guid>();
    trace.Use((e) => providerIds.Add(e.ProviderId));
    trace.Process();

    foreach (Guid providerId in providerIds)
    {
        Console.WriteLine(providerId);
    }
}

O exemplo a seguir mostra uma fonte de dados personalizada simplificada.

// Open a trace with TraceProcessor.Create() and call Run...

static void Run(ITraceProcessor trace)
{
    CustomDataSource customDataSource = new CustomDataSource();
    trace.Use(customDataSource);

    trace.Process();

    Console.WriteLine(customDataSource.Count);
}

class CustomDataSource : IFilteredEventConsumer
{
    public IReadOnlyList<Guid> ProviderIds { get; } = new Guid[] { new Guid("your provider ID") };

    public int Count { get; private set; }

    public void Process(EventContext eventContext)
    {
        ++Count;
    }
}

Próximas etapas

Neste tutorial, você aprendeu a estender o TraceProcessor.

A próxima etapa é aprender a carregar símbolos para rastreamentos.