static Perf_Activity() { s_ActivitySource = new ActivitySource("TestActivitySource"); s_ActivityListener = new ActivityListener { ShouldListenTo = s => s.Name == "TestActivitySource", Sample = (ref ActivityCreationOptions <ActivityContext> o) => ActivitySamplingResult.AllDataAndRecorded }; Dictionary <string, object> LargeTagSet = new Dictionary <string, object>(); for (int i = 0; i < 1024; i++) { if (i % 2 == 0) { LargeTagSet.Add($"Key{i}", i); } else { LargeTagSet.Add($"Key{i}", i.ToString()); } } ActivitySource.AddActivityListener(s_ActivityListener); s_ActivitySmall = s_ActivitySource.StartActivity( "TestActivity", ActivityKind.Internal, parentContext: default,
private void EnsureInitialized() { if (_HasInitialized) { return; } lock (_TraceListeners) { if (_HasInitialized) { return; } _CleanupThread = new Thread(CleanupThreadBody) { Name = $"{nameof(ActivityTraceListenerManager)}.Cleanup" }; _CleanupThread.Start(); // Watch out doing this in prod, it's expensive. _ActivityListener = new ActivityListener { ShouldListenTo = source => true, // Listens to all sources. Sample = (ref ActivityCreationOptions <ActivityContext> options) => ActivitySamplingResult.AllData, // Causes all Activity objects to be created and populated. ActivityStopped = OnActivityStopped }; ActivitySource.AddActivityListener(_ActivityListener); _HasInitialized = true; } _Options !.OpenedAction?.Invoke(); }