扩展 TraceProcessor

TraceProcessor 中提供了对多种跟踪数据的内置支持,但如果你有其他要分析的提供程序(包括自己自定义的提供程序),这些数据也可以在处理过程中从跟踪中实时获得。

注意

此部分 API 为预览版,正处于积极开发阶段。 以后的版本可能会更改此部分。

例如,下面是获取跟踪中提供程序 ID 列表的简单方法。

// 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);
    }
}

下面的示例演示一个简化的自定义数据源。

// 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;
    }
}

后续步骤

在本教程中,你了解了如何扩展 TraceProcessor。

下一步是了解如何为跟踪加载符号