2

使用 .Net Core 3.1

我已经像这样实现了我的事件源:

[EventSource(Name = "RequestStatistics-Events")]
public sealed class RequestEventsProvider : EventSource
{
    public RequestEventsProvider() : base(throwOnEventWriteErrors: false)
    {
    }

    [Event(1, Level = EventLevel.Informational, Opcode = EventOpcode.Info)]
    public void RequestProcessed(string requestPath, int responseCode, long processingTime)
    {
        WriteEvent(1, requestPath, responseCode, processingTime);
    }
}

然后我使用 dotnet-trace 收集跟踪,如下所示:

dotnet-trace collect --providers RequestStatistics-Events -p 23544

然后我在 PerfView 中打开跟踪日志并查看我的事件: 使用 dotnet-trace 收集的事件

如您所见,每个事件都包含堆栈。尽管在我的场景中它绝对没用,但它会产生额外的开销。如何禁用堆栈收集?

另一个问题是:是否可以禁用 Microsoft-Diagnostics-DiagnosticSource 提供程序的堆栈?我在 PerfView 日志中看到了类似的内容:

Enabling Provider:Microsoft-Diagnostics-DiagnosticSource Level:Informational Keywords:0xfffffffffffff7ff Stacks:1 Values:...blabla...

我尝试使用“堆栈”键值对运行集合:

Microsoft-Diagnostics-DiagnosticSource:0xfffffffffffff7ff:4:Stacks=0

但这并没有影响任何事情。

4

0 回答 0