diff --git a/examples/Example.Console/Example.Console.csproj b/examples/Example.Console/Example.Console.csproj index fd82a41..d851645 100644 --- a/examples/Example.Console/Example.Console.csproj +++ b/examples/Example.Console/Example.Console.csproj @@ -8,7 +8,7 @@ - + diff --git a/examples/Example.WorkerService/Example.WorkerService.csproj b/examples/Example.WorkerService/Example.WorkerService.csproj index 73e45cf..0430a31 100644 --- a/examples/Example.WorkerService/Example.WorkerService.csproj +++ b/examples/Example.WorkerService/Example.WorkerService.csproj @@ -9,7 +9,7 @@ - + diff --git a/src/Elastic.OpenTelemetry/Elastic.OpenTelemetry.csproj b/src/Elastic.OpenTelemetry/Elastic.OpenTelemetry.csproj index fa71023..6b18868 100644 --- a/src/Elastic.OpenTelemetry/Elastic.OpenTelemetry.csproj +++ b/src/Elastic.OpenTelemetry/Elastic.OpenTelemetry.csproj @@ -14,8 +14,8 @@ - - + + diff --git a/src/Elastic.OpenTelemetry/IOpenTelemetryBuilder.cs b/src/Elastic.OpenTelemetry/IOpenTelemetryBuilder.cs deleted file mode 100644 index bcb1ef1..0000000 --- a/src/Elastic.OpenTelemetry/IOpenTelemetryBuilder.cs +++ /dev/null @@ -1,159 +0,0 @@ -// Licensed to Elasticsearch B.V under one or more agreements. -// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. -// See the LICENSE file in the project root for more information - - -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -using System.Linq.Expressions; -using System.Reflection; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Diagnostics.Metrics; -using OpenTelemetry.Metrics; -using OpenTelemetry.Resources; -using OpenTelemetry.Trace; - -// ReSharper disable once CheckNamespace -namespace OpenTelemetry; - - -//This is only temporary while we wait for IOpenTelemetryBuilder to ship in the base OpenTelemetry libraries - - -/// An interface for configuring OpenTelemetry inside an . -public interface IOpenTelemetryBuilder -{ - /// - /// Gets the where OpenTelemetry services - /// are configured. - /// - IServiceCollection Services { get; } -} - -/// -/// Contains methods for extending the interface. -/// -public static class OpenTelemetryBuilderSdkExtensions -{ - /// - /// Registers an action to configure the s used - /// by tracing, metrics, and logging. - /// - /// . - /// - /// Note: This is safe to be called multiple times and by library authors. - /// Each registered configuration action will be applied sequentially. - /// - /// configuration - /// action. - /// The supplied for chaining - /// calls. - public static IOpenTelemetryBuilder ConfigureResource( - this IOpenTelemetryBuilder builder, - Action configure) - { - builder.Services.ConfigureOpenTelemetryMeterProvider(metrics => metrics.ConfigureResource(configure)); - - builder.Services.ConfigureOpenTelemetryTracerProvider(tracing => tracing.ConfigureResource(configure)); - - //builder.Services.ConfigureOpenTelemetryLoggerProvider(builder => builder.ConfigureResource(configure)); - - return builder; - } - - /// - /// Adds metric services into the builder. - /// - /// . - /// - /// Notes: - /// - /// This is safe to be called multiple times and by library authors. - /// Only a single will be created for a given - /// . - /// This method automatically registers an named 'OpenTelemetry' into the . - /// - /// - /// The supplied for chaining - /// calls. - public static IOpenTelemetryBuilder WithMetrics(this IOpenTelemetryBuilder builder) - => WithMetrics(builder, _ => { }); - - /// - /// Adds metric services into the builder. - /// - /// - /// . - /// - /// configuration callback. - /// The supplied for chaining - /// calls. - public static IOpenTelemetryBuilder WithMetrics( - this IOpenTelemetryBuilder builder, - Action configure) - { - //internal temporary hack while we wait for IOpenTelemetryBuilder to ship - //TODO cache - var x = Type.GetType("Microsoft.Extensions.Diagnostics.Metrics.OpenTelemetryMetricsBuilderExtensions"); - var method = x?.GetMethod("RegisterMetricsListener"); - - method?.Invoke(null, [builder.Services, configure]); - return builder; - - /* - OpenTelemetryMetricsBuilderExtensions.RegisterMetricsListener( - builder.Services, - configure); - - return builder; - */ - } - - /// - /// Adds tracing services into the builder. - /// - /// . - /// - /// Note: This is safe to be called multiple times and by library authors. - /// Only a single will be created for a given - /// . - /// - /// The supplied for chaining - /// calls. - public static IOpenTelemetryBuilder WithTracing(this IOpenTelemetryBuilder builder) - => WithTracing(builder, _ => { }); - - /// - /// Adds tracing services into the builder. - /// - /// - /// . - /// - /// configuration callback. - /// The supplied for chaining - /// calls. - public static IOpenTelemetryBuilder WithTracing( - this IOpenTelemetryBuilder builder, - Action configure) - { - - //internal temporary hack while we wait for IOpenTelemetryBuilder to ship - //TODO cache - - var constructor = typeof(TracerProviderBuilderBase).GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic).Single(); - var value = Expression.Parameter(typeof(IServiceCollection), "services"); - var body = Expression.New(constructor, value); - var lambda = Expression.Lambda>(body, value); - var tracerProviderBuilder = lambda.Compile()(builder.Services); - - //var tracerProviderBuilder = new TracerProviderBuilderBase(builder.Services); - - configure(tracerProviderBuilder); - - return builder; - } - -} diff --git a/tests/Elastic.OpenTelemetry.Tests/Elastic.OpenTelemetry.Tests.csproj b/tests/Elastic.OpenTelemetry.Tests/Elastic.OpenTelemetry.Tests.csproj index 6dfdf5a..884a617 100644 --- a/tests/Elastic.OpenTelemetry.Tests/Elastic.OpenTelemetry.Tests.csproj +++ b/tests/Elastic.OpenTelemetry.Tests/Elastic.OpenTelemetry.Tests.csproj @@ -11,7 +11,7 @@ - +