public Task <ActionResult> TraceCustomConfiguration( int?pid, [FromBody][Required] EventPipeConfigurationModel configuration, [FromQuery][Range(-1, int.MaxValue)] int durationSeconds = 30) { TimeSpan duration = ConvertSecondsToTimeSpan(durationSeconds); return(InvokeService(async() => { var providers = new List <EventPipeProvider>(); foreach (EventPipeProviderModel providerModel in configuration.Providers) { if (!IntegerOrHexStringAttribute.TryParse(providerModel.Keywords, out long keywords, out string parseError)) { throw new InvalidOperationException(parseError); } providers.Add(new EventPipeProvider( providerModel.Name, MapEventLevel(providerModel.EventLevel), keywords, providerModel.Arguments )); } var traceConfiguration = new EventPipeProviderSourceConfiguration( providers: providers.ToArray(), requestRundown: configuration.RequestRundown, bufferSizeInMB: configuration.BufferSizeInMB); return await StartTrace(pid, traceConfiguration, duration); })); }
public Task <ActionResult> TraceCustomConfiguration( ProcessFilter?processFilter, [FromBody][Required] EventPipeConfigurationModel configuration, [FromQuery][Range(-1, int.MaxValue)] int durationSeconds = 30, [FromQuery] string egressProvider = null) { return(InvokeForProcess(processInfo => { TimeSpan duration = ConvertSecondsToTimeSpan(durationSeconds); var providers = new List <EventPipeProvider>(); foreach (EventPipeProviderModel providerModel in configuration.Providers) { if (!IntegerOrHexStringAttribute.TryParse(providerModel.Keywords, out long keywords, out string parseError)) { throw new InvalidOperationException(parseError); } providers.Add(new EventPipeProvider( providerModel.Name, providerModel.EventLevel, keywords, providerModel.Arguments )); } var traceConfiguration = new EventPipeProviderSourceConfiguration( providers: providers.ToArray(), requestRundown: configuration.RequestRundown, bufferSizeInMB: configuration.BufferSizeInMB); return StartTrace(processInfo, traceConfiguration, duration, egressProvider); }, processFilter, ArtifactType_Trace)); }