using System.Collections.Generic;
using System.Diagnostics;
using OpenTelemetry.Trace;
using OpenTelemetry.Exporter;
public static void Main()
var activitySource = new ActivitySource("MySource");
var completedActivities = new List<Activity>();
var traceExporter = new InMemoryExporter<Activity>(completedActivities);
var traceProcessor = new SimpleActivityExportProcessor(traceExporter);
var builder = Sdk.CreateTracerProviderBuilder()
.AddProcessor(traceProcessor)
using var firstActivity = activitySource.StartActivity("Item1");
Console.WriteLine($"Activity.Current is {FormatSpan(Activity.Current)}");
using var secondActivity = activitySource.StartActivity("asdf", ActivityKind.Internal, parentId: null);
Console.WriteLine($"Activity.Current is {FormatSpan(Activity.Current)}");
private static string FormatSpan(Activity x)
var parentOp = x.Parent != null ? $"({x.Parent.OperationName})" : string.Empty;
$"TraceId: {x.Context.TraceId}, Source: {x.Source.Name}, SpanId: {x.Context.SpanId}, ParentId: {x.ParentId}{parentOp}, Operation: {x.OperationName}";