Использование. 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);
}
}
Затем я собираю трассировку с помощью do tnet -trace как это:
dotnet-trace collect --providers RequestStatistics-Events -p 23544
Затем я открываю tracelog в PerfView и вижу мои события:
Как вы можете видеть, каждое событие содержит стек внутри. Это создает дополнительные накладные расходы, хотя это абсолютно бесполезно в моем сценарии. Как отключить сбор стеков?
Другой вопрос: возможно ли отключить стеки для поставщика Microsoft-Diagnostics-DiagnosticSource? Я видел что-то подобное в журналах PerfView:
Enabling Provider:Microsoft-Diagnostics-DiagnosticSource Level:Informational Keywords:0xfffffffffffff7ff Stacks:1 Values:...blabla...
, и я пытался запустить сбор с парой ключ-значение «стеки»:
Microsoft-Diagnostics-DiagnosticSource:0xfffffffffffff7ff:4:Stacks=0
, но это не повлияло что угодно.