示例#1
0
        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();
        }