private void BuildConfiguration() { var filterDataStringBuilder = new StringBuilder(); filterDataStringBuilder.Append("FilterSpecs=\""); foreach (var filter in _loggerOptions.Rules) { if ((string.IsNullOrEmpty(filter.ProviderName) || filter.ProviderName.Equals(typeof(ConsoleLoggerProvider).FullName)) && filter.LogLevel.HasValue) { var categoryName = string.IsNullOrEmpty(filter.CategoryName) ? "Default" : filter.CategoryName; filterDataStringBuilder.Append($"{categoryName}:{filter.LogLevel};"); } } filterDataStringBuilder.Append("\""); var filterData = filterDataStringBuilder.ToString(); _providerList = new List <Provider>() { new Provider(name: _MicrosoftExtensionsLoggingProviderName, keywords: (ulong)LoggingEventSource.Keywords.FormattedMessage, eventLevel: EventLevel.LogAlways, filterData: filterData) }; _configuration = new SessionConfigurationV2( circularBufferSizeMB: 100, format: EventPipeSerializationFormat.NetTrace, requestRundown: false, providers: _providerList); }
// 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); }