Как отключить стеки для событий EventSource? - PullRequest
0 голосов
/ 06 февраля 2020

Использование. 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 и вижу мои события: Events collected with 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

, но это не повлияло что угодно.

...