Compartilhar via


Estender o TraceProcessor

Muitos tipos de dados de rastreamento têm suporte interno no TraceProcessor, mas se você tiver outros provedores que deseja analisar (incluindo seus provedores personalizados), esses dados também ficarão disponíveis no rastreamento ativo durante o processamento.

Observação

Esta parte da API está em versão prévia e em desenvolvimento ativo. Isso poderá mudar em versões futuras.

Por exemplo, esta é uma forma 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 será aprender a carregar símbolos para rastreamentos.