// Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 using System.Diagnostics; using OpenTelemetry; using OpenTelemetry.Resources; using OpenTelemetry.Trace; namespace Examples.Console; internal sealed class TestConsoleExporter { // To run this example, run the following command from // the reporoot\examples\Console\. // (eg: C:\repos\opentelemetry-dotnet\examples\Console\) // // dotnet run console public static int Run() { // Enable OpenTelemetry for the sources "Samples.SampleServer" and "Samples.SampleClient" // and use Console exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddSource("Samples.SampleClient", "Samples.SampleServer") .ConfigureResource(res => res.AddService("console-test")) #pragma warning disable CA2000 // Dispose objects before losing scope .AddProcessor(new MyProcessor()) // This must be added before ConsoleExporter #pragma warning restore CA2000 // Dispose objects before losing scope .AddConsoleExporter() .Build(); // The above line is required only in applications // which decide to use OpenTelemetry. using var sample = new InstrumentationWithActivitySource(); sample.Start(); System.Console.WriteLine("Traces are being created and exported " + "to Console in the background. " + "Press ENTER to stop."); System.Console.ReadLine(); return 0; } /// /// An example of custom processor which /// can be used to add more tags to an activity. /// internal sealed class MyProcessor : BaseProcessor { public override void OnStart(Activity activity) { if (activity.IsAllDataRequested) { if (activity.Kind == ActivityKind.Server) { activity.SetTag("customServerTag", "Custom Tag Value for server"); } else if (activity.Kind == ActivityKind.Client) { activity.SetTag("customClientTag", "Custom Tag Value for Client"); } } } } }