许多类型的跟踪数据在 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。
下一步是了解如何 加载符号 用于跟踪。