// Use EventPipe CollectTracing2 command to start monitoring. This may throw. private EventPipeEventSource RequestTracingV2(string providerString) { var configuration = new SessionConfigurationV2( circularBufferSizeMB: 1000, format: EventPipeSerializationFormat.NetTrace, requestRundown: false, providers: Trace.Extensions.ToProviders(providerString)); var binaryReader = EventPipeClient.CollectTracing2(_processId, configuration, out _sessionId); return(new EventPipeEventSource(binaryReader)); }
public EventPipeSession(int pid, List <Provider> providers, bool requestRundown = true) { _pid = pid; _providers = providers; var config = new SessionConfigurationV2( circularBufferSizeMB: 1024, format: EventPipeSerializationFormat.NetTrace, requestRundown: requestRundown, providers ); _eventPipeStream = EventPipeClient.CollectTracing2(pid, config, out _sessionId); _source = new EventPipeEventSource(_eventPipeStream); }
protected override async Task ExecuteAsync(CancellationToken cancellationToken) { cancellationToken.Register(() => { _optionsReloadToken?.Dispose(); EventPipeClient.StopTracing(_logViewerOptions.ProcessId, _sessionId); }); while (!cancellationToken.IsCancellationRequested) { BuildConfiguration(); _eventStream = EventPipeClient.CollectTracing2(_logViewerOptions.ProcessId, _configuration, out _sessionId); await Task.Run(() => ProcessEvents()); } if (!cancellationToken.IsCancellationRequested) { _lifetime.StopApplication(); } }