static public TelemetryPipe CollectETWEvents(this TelemetryPipe pipe, IEnumerable <ETWProvider> providers, Dictionary <string, string> additionalProperties = null, bool isFilteringOnlyOwnProcess = true) { var pid = Process.GetCurrentProcess().Id; pipe.RegisterObserver(ObservableEventListener .FromTraceEvent(providers.Select(x => x.Name).ToArray()) .Where(ev => !isFilteringOnlyOwnProcess || ev.ProcessID == pid) .Select(ev => new TelemetryEvent() { Type = "event", Data = FromTraceEvent(ev, additionalProperties), PublishDateTime = ev.TimeStamp })); return(pipe); }
static public TelemetryPipe CollectEventSourceEvents(this TelemetryPipe pipe, IEnumerable <ETWProvider> providers, Dictionary <string, string> additionalProperties = null) { foreach (var provider in providers) { pipe.RegisterObserver(ObservableEventListener .FromEventSource(provider.Name, provider.Level) .Select(ev => new TelemetryEvent() { Type = "event", Data = FromEventSourceEvent(ev, additionalProperties), PublishDateTime = DateTime.UtcNow })); } return(pipe); }
static public TelemetryPipe CollectMetricsNet(this TelemetryPipe pipe, int reportingPeriodSec, Dictionary <string, string> additionalProperties = null, bool resetOnReport = false) { pipe.RegisterObserver(new MetricNetInput(reportingPeriodSec, additionalProperties, resetOnReport).Stream); return(pipe); }