使用 .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
如您所见,每个事件都包含堆栈。尽管在我的场景中它绝对没用,但它会产生额外的开销。如何禁用堆栈收集?
另一个问题是:是否可以禁用 Microsoft-Diagnostics-DiagnosticSource 提供程序的堆栈?我在 PerfView 日志中看到了类似的内容:
Enabling Provider:Microsoft-Diagnostics-DiagnosticSource Level:Informational Keywords:0xfffffffffffff7ff Stacks:1 Values:...blabla...
我尝试使用“堆栈”键值对运行集合:
Microsoft-Diagnostics-DiagnosticSource:0xfffffffffffff7ff:4:Stacks=0
但这并没有影响任何事情。