diff --git a/src/Microsoft.Diagnostics.EventFlow.Inputs.Etw/Microsoft.Diagnostics.EventFlow.Inputs.Etw.csproj b/src/Microsoft.Diagnostics.EventFlow.Inputs.Etw/Microsoft.Diagnostics.EventFlow.Inputs.Etw.csproj index 417e7e90..74423834 100644 --- a/src/Microsoft.Diagnostics.EventFlow.Inputs.Etw/Microsoft.Diagnostics.EventFlow.Inputs.Etw.csproj +++ b/src/Microsoft.Diagnostics.EventFlow.Inputs.Etw/Microsoft.Diagnostics.EventFlow.Inputs.Etw.csproj @@ -9,7 +9,7 @@ Microsoft.Diagnostics.EventFlow.Inputs.Etw ../../PublicKey.snk true - 1.1.0 + 1.1.1 true Microsoft.Diagnostics.EventFlow.Inputs.Etw Microsoft;Diagnostics;EventFlow;Inputs;ETW;Event Tracing for Windows diff --git a/src/Microsoft.Diagnostics.EventFlow.Inputs.Etw/StandardTraceEventSession.cs b/src/Microsoft.Diagnostics.EventFlow.Inputs.Etw/StandardTraceEventSession.cs index 1afde797..649553c1 100644 --- a/src/Microsoft.Diagnostics.EventFlow.Inputs.Etw/StandardTraceEventSession.cs +++ b/src/Microsoft.Diagnostics.EventFlow.Inputs.Etw/StandardTraceEventSession.cs @@ -10,6 +10,7 @@ using Microsoft.Diagnostics.Tracing; using Microsoft.Diagnostics.Tracing.Session; using Validation; +using Microsoft.Diagnostics.EventFlow.Utilities.Etw; namespace Microsoft.Diagnostics.EventFlow.Inputs { @@ -73,7 +74,15 @@ public void Process(Action onEvent) if (!isProcessing) { isProcessing = true; - this.inner.Source.Dynamic.All += (traceEvent) => onEvent(traceEvent.ToEventData(this.healthReporter)); + this.inner.Source.Dynamic.All += (traceEvent) => + { + // Suppress events from TplEventSource--they are mostly interesting for debugging task processing and interaction, + // and not that useful for production tracing. However, TPL EventSource must be enabled to get hierarchical activity IDs. + if (!TplActivities.TplEventSourceGuid.Equals(traceEvent.ProviderGuid)) + { + onEvent(traceEvent.ToEventData(this.healthReporter)); + } + }; this.inner.Source.Process(); } } diff --git a/src/Microsoft.Diagnostics.EventFlow.Inputs.EventSource/EventSourceInput.cs b/src/Microsoft.Diagnostics.EventFlow.Inputs.EventSource/EventSourceInput.cs index 41705305..adb90824 100644 --- a/src/Microsoft.Diagnostics.EventFlow.Inputs.EventSource/EventSourceInput.cs +++ b/src/Microsoft.Diagnostics.EventFlow.Inputs.EventSource/EventSourceInput.cs @@ -71,7 +71,12 @@ public override void Dispose() protected override void OnEventWritten(EventWrittenEventArgs eventArgs) { - this.subject.OnNext(eventArgs.ToEventData(this.healthReporter, nameof(EventSourceInput))); + // Suppress events from TplEventSource--they are mostly interesting for debugging task processing and interaction, + // and not that useful for production tracing. However, TPL EventSource must be enabled to get hierarchical activity IDs. + if (!TplActivities.TplEventSourceGuid.Equals(eventArgs.EventSource.Guid)) + { + this.subject.OnNext(eventArgs.ToEventData(this.healthReporter, nameof(EventSourceInput))); + } } protected override void OnEventSourceCreated(EventSource eventSource) diff --git a/src/Microsoft.Diagnostics.EventFlow.Inputs.EventSource/Microsoft.Diagnostics.EventFlow.Inputs.EventSource.csproj b/src/Microsoft.Diagnostics.EventFlow.Inputs.EventSource/Microsoft.Diagnostics.EventFlow.Inputs.EventSource.csproj index a6881d5f..d1eff51e 100644 --- a/src/Microsoft.Diagnostics.EventFlow.Inputs.EventSource/Microsoft.Diagnostics.EventFlow.Inputs.EventSource.csproj +++ b/src/Microsoft.Diagnostics.EventFlow.Inputs.EventSource/Microsoft.Diagnostics.EventFlow.Inputs.EventSource.csproj @@ -3,7 +3,7 @@ Provides an input implementation for capturing diagnostics data sourced through System.Diagnostics.Tracing.EventSource infrastructure. © Microsoft Corporation. All rights reserved. - 1.1.0 + 1.1.1 Microsoft netstandard1.6;net46 true