From 89c7cdeecadb3e8e70376769e2da88e2815f94ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Neum=C3=BCller?= Date: Wed, 25 May 2022 18:00:57 +0200 Subject: [PATCH 1/8] Add & use ConfigureResource API. --- docs/logs/customizing-the-sdk/Program.cs | 4 +-- docs/logs/customizing-the-sdk/README.md | 11 ++++---- examples/AspNet/App_Start/RouteConfig.cs | 1 - examples/AspNet/App_Start/WebApiConfig.cs | 3 -- examples/AspNet/Controllers/HomeController.cs | 2 -- .../Controllers/WeatherForecastController.cs | 4 --- examples/AspNet/Global.asax.cs | 2 -- examples/AspNetCore/Program.cs | 21 +++++++------- examples/Console/TestConsoleExporter.cs | 2 +- examples/Console/TestHttpClient.cs | 2 +- examples/Console/TestInMemoryExporter.cs | 2 +- examples/Console/TestJaegerExporter.cs | 2 +- examples/Console/TestMetrics.cs | 2 +- .../TestOTelShimWithConsoleExporter.cs | 2 +- examples/Console/TestOpenTracingShim.cs | 2 +- examples/Console/TestOtlpExporter.cs | 2 +- examples/Console/TestZipkinExporter.cs | 2 +- examples/GrpcService/Startup.cs | 2 +- .../.publicApi/net462/PublicAPI.Unshipped.txt | 5 +++- .../netstandard2.0/PublicAPI.Unshipped.txt | 5 +++- src/OpenTelemetry/CHANGELOG.md | 2 ++ .../Logs/OpenTelemetryLoggerOptions.cs | 16 +++++++++++ .../Metrics/MeterProviderBuilderBase.cs | 18 ++++++------ .../Metrics/MeterProviderBuilderExtensions.cs | 22 ++++++++++++++- src/OpenTelemetry/README.md | 11 ++++---- .../Trace/TracerProviderBuilderBase.cs | 28 +++++++++---------- .../Trace/TracerProviderBuilderExtensions.cs | 25 ++++++++++++++++- .../InstrumentedHttpClientBenchmark.cs | 2 +- .../SqlClientTests.cs | 1 - .../Trace/TracerProviderSdkTest.cs | 12 +++++--- 30 files changed, 136 insertions(+), 79 deletions(-) diff --git a/docs/logs/customizing-the-sdk/Program.cs b/docs/logs/customizing-the-sdk/Program.cs index edaf04e992c..4e74c286d8f 100644 --- a/docs/logs/customizing-the-sdk/Program.cs +++ b/docs/logs/customizing-the-sdk/Program.cs @@ -30,9 +30,7 @@ public static void Main() builder.AddOpenTelemetry(options => { options.IncludeScopes = true; - options.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService( - serviceName: "MyService", - serviceVersion: "1.0.0")); + options.ConfigureResources(r => r.AddService(serviceName: "MyService", serviceVersion: "1.0.0")); options.AddConsoleExporter(); }); }); diff --git a/docs/logs/customizing-the-sdk/README.md b/docs/logs/customizing-the-sdk/README.md index e9cc9e020ef..ebe07bba08b 100644 --- a/docs/logs/customizing-the-sdk/README.md +++ b/docs/logs/customizing-the-sdk/README.md @@ -52,26 +52,25 @@ var loggerFactory = LoggerFactory.Create(builder => For more information on Processors, please review [Extending the SDK](../extending-the-sdk/README.md#processor) -### SetResourceBuilder +### ConfigureResources [Resource](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/sdk.md) is the immutable representation of the entity producing the telemetry. If no `Resource` is explicitly configured, the default is to use a resource indicating this [Telemetry SDK](https://github.com/open-telemetry/opentelemetry-specification/tree/main/specification/resource/semantic_conventions#telemetry-sdk). -The `SetResourceBuilder` method on `OpenTelemetryLoggerOptions` can be used to -set a single `ResourceBuilder`. If `SetResourceBuilder` is called multiple -times, only the last is kept. It is not possible to change the resource builder +The `ConfigureResources` method on `OpenTelemetryLoggerOptions` can be used to +configure the `ResourceBuilder`. It is not possible to change the resources *after* creating the `LoggerFactory`. -The snippet below shows configuring a custom `ResourceBuilder` to the provider. +The snippet below shows configuring the `ResourceBuilder` of the provider. ```csharp var loggerFactory = LoggerFactory.Create(builder => { builder.AddOpenTelemetry(options => { - options.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService( + options.ConfigureResources(r => r.AddService( serviceName: "MyService", serviceVersion: "1.0.0" )); diff --git a/examples/AspNet/App_Start/RouteConfig.cs b/examples/AspNet/App_Start/RouteConfig.cs index e1c6ae4df10..5b4496aa135 100644 --- a/examples/AspNet/App_Start/RouteConfig.cs +++ b/examples/AspNet/App_Start/RouteConfig.cs @@ -14,7 +14,6 @@ // limitations under the License. // -using System.Web.Mvc; using System.Web.Routing; namespace Examples.AspNet diff --git a/examples/AspNet/App_Start/WebApiConfig.cs b/examples/AspNet/App_Start/WebApiConfig.cs index 243637d65d4..59fe1d13482 100644 --- a/examples/AspNet/App_Start/WebApiConfig.cs +++ b/examples/AspNet/App_Start/WebApiConfig.cs @@ -14,9 +14,6 @@ // limitations under the License. // -using System.Net.Http.Formatting; -using System.Web.Http; - namespace Examples.AspNet { public static class WebApiConfig diff --git a/examples/AspNet/Controllers/HomeController.cs b/examples/AspNet/Controllers/HomeController.cs index f238805897d..2518a41abed 100644 --- a/examples/AspNet/Controllers/HomeController.cs +++ b/examples/AspNet/Controllers/HomeController.cs @@ -14,8 +14,6 @@ // limitations under the License. // -using System.Web.Mvc; - namespace Examples.AspNet.Controllers { public class HomeController : Controller diff --git a/examples/AspNet/Controllers/WeatherForecastController.cs b/examples/AspNet/Controllers/WeatherForecastController.cs index 092bdf07104..32f57270571 100644 --- a/examples/AspNet/Controllers/WeatherForecastController.cs +++ b/examples/AspNet/Controllers/WeatherForecastController.cs @@ -16,13 +16,9 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.Linq; -using System.Net; -using System.Net.Http; using System.Security.Cryptography; using System.Threading.Tasks; -using System.Web.Http; using Examples.AspNet.Models; using OpenTelemetry; diff --git a/examples/AspNet/Global.asax.cs b/examples/AspNet/Global.asax.cs index 260dda7f92b..73fd15fedd5 100644 --- a/examples/AspNet/Global.asax.cs +++ b/examples/AspNet/Global.asax.cs @@ -17,8 +17,6 @@ using System; using System.Configuration; using System.Web; -using System.Web.Http; -using System.Web.Mvc; using System.Web.Routing; using OpenTelemetry; using OpenTelemetry.Exporter; diff --git a/examples/AspNetCore/Program.cs b/examples/AspNetCore/Program.cs index c507e7df44e..0136a364999 100644 --- a/examples/AspNetCore/Program.cs +++ b/examples/AspNetCore/Program.cs @@ -24,27 +24,28 @@ var builder = WebApplication.CreateBuilder(args); -var serviceName = "AspNetCoreExampleService"; - // OpenTelemetry var assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version?.ToString() ?? "unknown"; // Switch between Zipkin/Jaeger/OTLP by setting UseExporter in appsettings.json. var tracingExporter = builder.Configuration.GetValue("UseTracingExporter").ToLowerInvariant(); -var resourceBuilder = tracingExporter switch +var serviceName = tracingExporter switch { - "jaeger" => ResourceBuilder.CreateDefault().AddService(builder.Configuration.GetValue("Jaeger:ServiceName"), serviceVersion: assemblyVersion, serviceInstanceId: Environment.MachineName), - "zipkin" => ResourceBuilder.CreateDefault().AddService(builder.Configuration.GetValue("Zipkin:ServiceName"), serviceVersion: assemblyVersion, serviceInstanceId: Environment.MachineName), - "otlp" => ResourceBuilder.CreateDefault().AddService(builder.Configuration.GetValue("Otlp:ServiceName"), serviceVersion: assemblyVersion, serviceInstanceId: Environment.MachineName), - _ => ResourceBuilder.CreateDefault().AddService(serviceName, serviceVersion: assemblyVersion, serviceInstanceId: Environment.MachineName), + "jaeger" => builder.Configuration.GetValue("Jaeger:ServiceName"), + "zipkin" => builder.Configuration.GetValue("Zipkin:ServiceName"), + "otlp" => builder.Configuration.GetValue("Otlp:ServiceName"), + _ => "AspNetCoreExampleService", }; +Action configureResources = r => r.AddService( + serviceName, serviceVersion: assemblyVersion, serviceInstanceId: Environment.MachineName); + // Traces builder.Services.AddOpenTelemetryTracing(options => { options - .SetResourceBuilder(resourceBuilder) + .ConfigureResources(configureResources) .SetSampler(new AlwaysOnSampler()) .AddHttpClientInstrumentation() .AddAspNetCoreInstrumentation(); @@ -88,7 +89,7 @@ builder.Logging.AddOpenTelemetry(options => { - options.SetResourceBuilder(resourceBuilder); + options.ConfigureResources(configureResources); var logExporter = builder.Configuration.GetValue("UseLogExporter").ToLowerInvariant(); switch (logExporter) { @@ -114,7 +115,7 @@ // Metrics builder.Services.AddOpenTelemetryMetrics(options => { - options.SetResourceBuilder(resourceBuilder) + options.ConfigureResources(configureResources) .AddHttpClientInstrumentation() .AddAspNetCoreInstrumentation(); diff --git a/examples/Console/TestConsoleExporter.cs b/examples/Console/TestConsoleExporter.cs index 9929beab33b..4abcce7f7b0 100644 --- a/examples/Console/TestConsoleExporter.cs +++ b/examples/Console/TestConsoleExporter.cs @@ -39,7 +39,7 @@ private static object RunWithActivitySource() // and use Console exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddSource("Samples.SampleClient", "Samples.SampleServer") - .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("console-test")) + .ConfigureResources(res => res.AddService("console-test")) .AddProcessor(new MyProcessor()) // This must be added before ConsoleExporter .AddConsoleExporter() .Build(); diff --git a/examples/Console/TestHttpClient.cs b/examples/Console/TestHttpClient.cs index 734cae06b58..16c836abd4f 100644 --- a/examples/Console/TestHttpClient.cs +++ b/examples/Console/TestHttpClient.cs @@ -34,7 +34,7 @@ internal static object Run() using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddHttpClientInstrumentation() - .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("http-service-example")) + .ConfigureResources(r => r.AddService("http-service-example")) .AddSource("http-client-test") .AddConsoleExporter() .Build(); diff --git a/examples/Console/TestInMemoryExporter.cs b/examples/Console/TestInMemoryExporter.cs index f46ed608bdf..1c653f605f1 100644 --- a/examples/Console/TestInMemoryExporter.cs +++ b/examples/Console/TestInMemoryExporter.cs @@ -51,7 +51,7 @@ private static void RunWithActivitySource(ICollection exportedItems) // and use InMemory exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddSource("Samples.SampleClient", "Samples.SampleServer") - .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("inmemory-test")) + .ConfigureResources(r => r.AddService("inmemory-test")) .AddInMemoryExporter(exportedItems) .Build(); diff --git a/examples/Console/TestJaegerExporter.cs b/examples/Console/TestJaegerExporter.cs index 2c67e9bff66..8534beda7e9 100644 --- a/examples/Console/TestJaegerExporter.cs +++ b/examples/Console/TestJaegerExporter.cs @@ -56,7 +56,7 @@ internal static object RunWithActivity(string host, int port) // Enable OpenTelemetry for the sources "Samples.SampleServer" and "Samples.SampleClient" // and use the Jaeger exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() - .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("jaeger-test")) + .ConfigureResources(r => r.AddService("jaeger-test")) .AddSource("Samples.SampleClient", "Samples.SampleServer") .AddJaegerExporter(o => { diff --git a/examples/Console/TestMetrics.cs b/examples/Console/TestMetrics.cs index 35fc3dd1324..669788af4d1 100644 --- a/examples/Console/TestMetrics.cs +++ b/examples/Console/TestMetrics.cs @@ -33,7 +33,7 @@ internal static object Run(MetricsOptions options) using var meter = new Meter("TestMeter"); var providerBuilder = Sdk.CreateMeterProviderBuilder() - .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("myservice")) + .ConfigureResources(r => r.AddService("myservice")) .AddMeter(meter.Name); // All instruments from this meter are enabled. if (options.UseExporter.Equals("otlp", StringComparison.OrdinalIgnoreCase)) diff --git a/examples/Console/TestOTelShimWithConsoleExporter.cs b/examples/Console/TestOTelShimWithConsoleExporter.cs index 984ac7ad380..26b866d9d69 100644 --- a/examples/Console/TestOTelShimWithConsoleExporter.cs +++ b/examples/Console/TestOTelShimWithConsoleExporter.cs @@ -28,7 +28,7 @@ internal static object Run(OpenTelemetryShimOptions options) // and use a single pipeline with a custom MyProcessor, and Console exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddSource("MyCompany.MyProduct.MyWebServer") - .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("MyServiceName")) + .ConfigureResources(r => r.AddService("MyServiceName")) .AddConsoleExporter() .Build(); diff --git a/examples/Console/TestOpenTracingShim.cs b/examples/Console/TestOpenTracingShim.cs index f0e967992a2..ae9995ea083 100644 --- a/examples/Console/TestOpenTracingShim.cs +++ b/examples/Console/TestOpenTracingShim.cs @@ -31,7 +31,7 @@ internal static object Run(OpenTracingShimOptions options) // and use Console exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddSource("MyCompany.MyProduct.MyWebServer") - .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("MyServiceName")) + .ConfigureResources(r => r.AddService("MyServiceName")) .AddConsoleExporter() .Build(); diff --git a/examples/Console/TestOtlpExporter.cs b/examples/Console/TestOtlpExporter.cs index 3936f1b0ef8..51202fd7c60 100644 --- a/examples/Console/TestOtlpExporter.cs +++ b/examples/Console/TestOtlpExporter.cs @@ -71,7 +71,7 @@ private static object RunWithActivitySource(string endpoint, string protocol) // and use OTLP exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddSource("Samples.SampleClient", "Samples.SampleServer") - .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("otlp-test")) + .ConfigureResources(r => r.AddService("otlp-test")) .AddOtlpExporter(opt => { // If endpoint was not specified, the proper one will be selected according to the protocol. diff --git a/examples/Console/TestZipkinExporter.cs b/examples/Console/TestZipkinExporter.cs index 40c44551b84..4a1ee7efd91 100644 --- a/examples/Console/TestZipkinExporter.cs +++ b/examples/Console/TestZipkinExporter.cs @@ -39,7 +39,7 @@ internal static object Run(string zipkinUri) // and use the Zipkin exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddSource("Samples.SampleClient", "Samples.SampleServer") - .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("zipkin-test")) + .ConfigureResources(r => r.AddService("zipkin-test")) .AddZipkinExporter(o => { o.Endpoint = new Uri(zipkinUri); diff --git a/examples/GrpcService/Startup.cs b/examples/GrpcService/Startup.cs index a2d1adf7e0d..5e0ab4c2574 100644 --- a/examples/GrpcService/Startup.cs +++ b/examples/GrpcService/Startup.cs @@ -45,7 +45,7 @@ public void ConfigureServices(IServiceCollection services) { case "jaeger": services.AddOpenTelemetryTracing((builder) => builder - .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(this.Configuration.GetValue("Jaeger:ServiceName"))) + .ConfigureResources(r => r.AddService(this.Configuration.GetValue("Jaeger:ServiceName"))) .AddAspNetCoreInstrumentation() .AddJaegerExporter(jaegerOptions => { diff --git a/src/OpenTelemetry/.publicApi/net462/PublicAPI.Unshipped.txt b/src/OpenTelemetry/.publicApi/net462/PublicAPI.Unshipped.txt index 3f5fd985f93..5b29faa9e81 100644 --- a/src/OpenTelemetry/.publicApi/net462/PublicAPI.Unshipped.txt +++ b/src/OpenTelemetry/.publicApi/net462/PublicAPI.Unshipped.txt @@ -9,4 +9,7 @@ OpenTelemetry.Logs.LogRecord.TraceId.set -> void OpenTelemetry.Logs.LogRecord.TraceState.set -> void OpenTelemetry.Logs.OpenTelemetryLoggerProvider.ForceFlush(int timeoutMilliseconds = -1) -> bool OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider() -> void -OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider(System.Action! configure) -> void \ No newline at end of file +OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider(System.Action! configure) -> void +OpenTelemetry.Logs.OpenTelemetryLoggerOptions.ConfigureResources(System.Action! configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions! +~static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureResources(this OpenTelemetry.Metrics.MeterProviderBuilder meterProviderBuilder, System.Action configure) -> OpenTelemetry.Metrics.MeterProviderBuilder +~static OpenTelemetry.Trace.TracerProviderBuilderExtensions.ConfigureResources(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, System.Action configure) -> OpenTelemetry.Trace.TracerProviderBuilder diff --git a/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt b/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt index 3f5fd985f93..5b29faa9e81 100644 --- a/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt +++ b/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt @@ -9,4 +9,7 @@ OpenTelemetry.Logs.LogRecord.TraceId.set -> void OpenTelemetry.Logs.LogRecord.TraceState.set -> void OpenTelemetry.Logs.OpenTelemetryLoggerProvider.ForceFlush(int timeoutMilliseconds = -1) -> bool OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider() -> void -OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider(System.Action! configure) -> void \ No newline at end of file +OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider(System.Action! configure) -> void +OpenTelemetry.Logs.OpenTelemetryLoggerOptions.ConfigureResources(System.Action! configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions! +~static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureResources(this OpenTelemetry.Metrics.MeterProviderBuilder meterProviderBuilder, System.Action configure) -> OpenTelemetry.Metrics.MeterProviderBuilder +~static OpenTelemetry.Trace.TracerProviderBuilderExtensions.ConfigureResources(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, System.Action configure) -> OpenTelemetry.Trace.TracerProviderBuilder diff --git a/src/OpenTelemetry/CHANGELOG.md b/src/OpenTelemetry/CHANGELOG.md index 3b4cc4c70fe..490b4f5ae1b 100644 --- a/src/OpenTelemetry/CHANGELOG.md +++ b/src/OpenTelemetry/CHANGELOG.md @@ -35,6 +35,8 @@ Released 2022-June-1 * Swallow `ObjectDisposedException` in `BatchExportProcessor` and `PeriodicExportingMetricReader`. ([#3291](https://github.com/open-telemetry/opentelemetry-dotnet/pull/3291)) +* Add `ConfigureResources` which can replace SetResourceBuilder more succinctly in most cases + and has greater flexibility (applies to TracerProvicerBuilder, MeterProviderBuilder, OpenTelemetryLoggingOptions). ## 1.3.0-beta.2 diff --git a/src/OpenTelemetry/Logs/OpenTelemetryLoggerOptions.cs b/src/OpenTelemetry/Logs/OpenTelemetryLoggerOptions.cs index 1a779ac63ef..0900f9271b7 100644 --- a/src/OpenTelemetry/Logs/OpenTelemetryLoggerOptions.cs +++ b/src/OpenTelemetry/Logs/OpenTelemetryLoggerOptions.cs @@ -16,6 +16,7 @@ #nullable enable +using System; using System.Collections.Generic; using OpenTelemetry.Internal; using OpenTelemetry.Resources; @@ -73,6 +74,8 @@ public OpenTelemetryLoggerOptions AddProcessor(BaseProcessor processo /// /// Sets the from which the Resource associated with /// this provider is built from. Overwrites currently set ResourceBuilder. + /// You should usually use instead + /// (call if desired). /// /// from which Resource will be built. /// Returns for chaining. @@ -83,5 +86,18 @@ public OpenTelemetryLoggerOptions SetResourceBuilder(ResourceBuilder resourceBui this.ResourceBuilder = resourceBuilder; return this; } + + /// + /// Modify the from which the Resource associated with + /// this provider is built from in-place. + /// + /// An action which modifies the provided in-place. + /// Returns for chaining. + public OpenTelemetryLoggerOptions ConfigureResources(Action configure) + { + Guard.ThrowIfNull(configure, nameof(configure)); + configure(this.ResourceBuilder); + return this; + } } } diff --git a/src/OpenTelemetry/Metrics/MeterProviderBuilderBase.cs b/src/OpenTelemetry/Metrics/MeterProviderBuilderBase.cs index e3614abb495..aa5a5ace8e5 100644 --- a/src/OpenTelemetry/Metrics/MeterProviderBuilderBase.cs +++ b/src/OpenTelemetry/Metrics/MeterProviderBuilderBase.cs @@ -45,6 +45,16 @@ protected MeterProviderBuilderBase() internal List MetricReaders { get; } = new List(); + internal ResourceBuilder ResourceBuilder + { + get => this.resourceBuilder; + set + { + Debug.Assert(value != null, $"{nameof(this.ResourceBuilder)} must not be set to null"); + this.resourceBuilder = value; + } + } + /// public override MeterProviderBuilder AddInstrumentation(Func instrumentationFactory) { @@ -126,14 +136,6 @@ internal MeterProviderBuilder SetMaxMetricPointsPerMetricStream(int maxMetricPoi return this; } - internal MeterProviderBuilder SetResourceBuilder(ResourceBuilder resourceBuilder) - { - Debug.Assert(resourceBuilder != null, $"{nameof(resourceBuilder)} must not be null"); - - this.resourceBuilder = resourceBuilder; - return this; - } - /// /// Run the configured actions to initialize the . /// diff --git a/src/OpenTelemetry/Metrics/MeterProviderBuilderExtensions.cs b/src/OpenTelemetry/Metrics/MeterProviderBuilderExtensions.cs index bda417b078d..1a3cdc32d56 100644 --- a/src/OpenTelemetry/Metrics/MeterProviderBuilderExtensions.cs +++ b/src/OpenTelemetry/Metrics/MeterProviderBuilderExtensions.cs @@ -191,7 +191,27 @@ public static MeterProviderBuilder SetResourceBuilder(this MeterProviderBuilder { if (meterProviderBuilder is MeterProviderBuilderBase meterProviderBuilderBase) { - meterProviderBuilderBase.SetResourceBuilder(resourceBuilder); + meterProviderBuilderBase.ResourceBuilder = resourceBuilder; + } + + return meterProviderBuilder; + } + + /// + /// Modify the from which the Resource associated with + /// this provider is built from in-place. + /// + /// MeterProviderBuilder instance. + /// An action which modifies the provided in-place. + /// Returns for chaining. + public static MeterProviderBuilder ConfigureResources(this MeterProviderBuilder meterProviderBuilder, Action configure) + { + Guard.ThrowIfNull(meterProviderBuilder, nameof(meterProviderBuilder)); + Guard.ThrowIfNull(configure, nameof(configure)); + + if (meterProviderBuilder is MeterProviderBuilderBase meterProviderBuilderBase) + { + configure(meterProviderBuilderBase.ResourceBuilder); } return meterProviderBuilder; diff --git a/src/OpenTelemetry/README.md b/src/OpenTelemetry/README.md index 0646d685207..0be266dd35c 100644 --- a/src/OpenTelemetry/README.md +++ b/src/OpenTelemetry/README.md @@ -238,12 +238,11 @@ is the immutable representation of the entity producing the telemetry. If no `Resource` is explicitly configured, the default is to use a resource indicating this [Telemetry SDK](https://github.com/open-telemetry/opentelemetry-specification/tree/main/specification/resource/semantic_conventions#telemetry-sdk). -`SetResourceBuilder` method on `TracerProviderBuilder` can be used to set a -`ResourceBuilder` on the provider. When the provider is built, it automatically +The `ConfigureResource` method on `TracerProviderBuilder` can be used to set a +configure the resource on the provider. When the provider is built, it automatically builds the final `Resource` from the configured `ResourceBuilder`. As with -samplers, there can only be a single `Resource` associated with a provider. If -multiple `SetResourceBuilder` is called, the last one wins. Also, it is not -possible to change the resource builder *after* the provider is built, by +samplers, there can only be a single `Resource` associated with a provider. +It is not possible to change the resource builder *after* the provider is built, by calling the `Build()` method on the `TracerProviderBuilder`. `ResourceBuilder` offers various methods to construct resource comprising of multiple attributes from various sources. @@ -256,7 +255,7 @@ using OpenTelemetry.Resources; using OpenTelemetry.Trace; using var tracerProvider = Sdk.CreateTracerProviderBuilder() - .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("MyServiceName")) + .ConfigureResources(r => r.AddService("MyServiceName")) .Build(); ``` diff --git a/src/OpenTelemetry/Trace/TracerProviderBuilderBase.cs b/src/OpenTelemetry/Trace/TracerProviderBuilderBase.cs index 7ab0f53a70f..708c7bc45b1 100644 --- a/src/OpenTelemetry/Trace/TracerProviderBuilderBase.cs +++ b/src/OpenTelemetry/Trace/TracerProviderBuilderBase.cs @@ -38,6 +38,20 @@ protected TracerProviderBuilderBase() { } + /// + /// Gets or sets the from which the Resource associated with + /// this provider is built from. Setting this overwrites currently set ResourceBuilder. + /// + internal ResourceBuilder ResourceBuilder + { + get => this.resourceBuilder; + set + { + Guard.ThrowIfNull(value); + this.resourceBuilder = value; + } + } + /// public override TracerProviderBuilder AddInstrumentation( Func instrumentationFactory) @@ -135,20 +149,6 @@ internal TracerProviderBuilder SetSampler(Sampler sampler) return this; } - /// - /// Sets the from which the Resource associated with - /// this provider is built from. Overwrites currently set ResourceBuilder. - /// - /// from which Resource will be built. - /// Returns for chaining. - internal TracerProviderBuilder SetResourceBuilder(ResourceBuilder resourceBuilder) - { - Guard.ThrowIfNull(resourceBuilder); - - this.resourceBuilder = resourceBuilder; - return this; - } - /// /// Adds processor to the provider. /// diff --git a/src/OpenTelemetry/Trace/TracerProviderBuilderExtensions.cs b/src/OpenTelemetry/Trace/TracerProviderBuilderExtensions.cs index 2c1bef0ef5e..1a2ce2ba4a6 100644 --- a/src/OpenTelemetry/Trace/TracerProviderBuilderExtensions.cs +++ b/src/OpenTelemetry/Trace/TracerProviderBuilderExtensions.cs @@ -16,6 +16,7 @@ using System; using System.Diagnostics; +using OpenTelemetry.Internal; using OpenTelemetry.Resources; namespace OpenTelemetry.Trace @@ -61,6 +62,8 @@ public static TracerProviderBuilder SetSampler(this TracerProviderBuilder tracer /// /// Sets the from which the Resource associated with /// this provider is built from. Overwrites currently set ResourceBuilder. + /// You should usually use instead + /// (call if desired). /// /// TracerProviderBuilder instance. /// from which Resource will be built. @@ -69,7 +72,27 @@ public static TracerProviderBuilder SetResourceBuilder(this TracerProviderBuilde { if (tracerProviderBuilder is TracerProviderBuilderBase tracerProviderBuilderBase) { - tracerProviderBuilderBase.SetResourceBuilder(resourceBuilder); + tracerProviderBuilderBase.ResourceBuilder = resourceBuilder; + } + + return tracerProviderBuilder; + } + + /// + /// Modify the from which the Resource associated with + /// this provider is built from in-place. + /// + /// TracerProviderBuilder instance. + /// An action which modifies the provided in-place. + /// Returns for chaining. + public static TracerProviderBuilder ConfigureResources(this TracerProviderBuilder tracerProviderBuilder, Action configure) + { + Guard.ThrowIfNull(tracerProviderBuilder, nameof(tracerProviderBuilder)); + Guard.ThrowIfNull(configure, nameof(configure)); + + if (tracerProviderBuilder is TracerProviderBuilderBase tracerProviderBuilderBase) + { + configure(tracerProviderBuilderBase.ResourceBuilder); } return tracerProviderBuilder; diff --git a/test/Benchmarks/Instrumentation/InstrumentedHttpClientBenchmark.cs b/test/Benchmarks/Instrumentation/InstrumentedHttpClientBenchmark.cs index 7f719db01ab..65c143afb29 100644 --- a/test/Benchmarks/Instrumentation/InstrumentedHttpClientBenchmark.cs +++ b/test/Benchmarks/Instrumentation/InstrumentedHttpClientBenchmark.cs @@ -52,7 +52,7 @@ public void GlobalSetup() this.tracerProvider = Sdk.CreateTracerProviderBuilder() .AddHttpClientInstrumentation() - .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(ServiceName)) + .ConfigureResources(r => r.AddService(ServiceName)) .AddSource(SourceName) .Build(); diff --git a/test/OpenTelemetry.Instrumentation.SqlClient.Tests/SqlClientTests.cs b/test/OpenTelemetry.Instrumentation.SqlClient.Tests/SqlClientTests.cs index 6c1979d0d58..ff67fb703d2 100644 --- a/test/OpenTelemetry.Instrumentation.SqlClient.Tests/SqlClientTests.cs +++ b/test/OpenTelemetry.Instrumentation.SqlClient.Tests/SqlClientTests.cs @@ -20,7 +20,6 @@ using System.Diagnostics; using System.Linq; using Microsoft.Data.SqlClient; -using Moq; using OpenTelemetry.Instrumentation.SqlClient.Implementation; using OpenTelemetry.Tests; using OpenTelemetry.Trace; diff --git a/test/OpenTelemetry.Tests/Trace/TracerProviderSdkTest.cs b/test/OpenTelemetry.Tests/Trace/TracerProviderSdkTest.cs index 59c1335bee4..ed4d0490aaf 100644 --- a/test/OpenTelemetry.Tests/Trace/TracerProviderSdkTest.cs +++ b/test/OpenTelemetry.Tests/Trace/TracerProviderSdkTest.cs @@ -1068,11 +1068,15 @@ public void AddLegacyOperationNameAddsActivityListenerForEmptyActivitySource() Assert.True(emptyActivitySource.HasListeners()); } - [Fact] - public void TracerProviderSdkBuildsWithSDKResource() + [Theory] + [InlineData(true)] + [InlineData(false)] + public void TracerProviderSdkBuildsWithSDKResource(bool useConfigure) { - var tracerProvider = Sdk.CreateTracerProviderBuilder().SetResourceBuilder( - ResourceBuilder.CreateDefault().AddTelemetrySdk()).Build(); + var tracerProvider = useConfigure ? + Sdk.CreateTracerProviderBuilder().SetResourceBuilder( + ResourceBuilder.CreateDefault().AddTelemetrySdk()).Build() : + Sdk.CreateTracerProviderBuilder().ConfigureResources(r => r.AddTelemetrySdk()).Build(); var resource = tracerProvider.GetResource(); var attributes = resource.Attributes; From 32369df31e463c882b9c5c4942eb896d8ee431ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Neum=C3=BCller?= Date: Wed, 25 May 2022 18:05:17 +0200 Subject: [PATCH 2/8] Add PR# --- src/OpenTelemetry/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/OpenTelemetry/CHANGELOG.md b/src/OpenTelemetry/CHANGELOG.md index 490b4f5ae1b..18dad6859b2 100644 --- a/src/OpenTelemetry/CHANGELOG.md +++ b/src/OpenTelemetry/CHANGELOG.md @@ -37,6 +37,7 @@ Released 2022-June-1 ([#3291](https://github.com/open-telemetry/opentelemetry-dotnet/pull/3291)) * Add `ConfigureResources` which can replace SetResourceBuilder more succinctly in most cases and has greater flexibility (applies to TracerProvicerBuilder, MeterProviderBuilder, OpenTelemetryLoggingOptions). + ([#3307](https://github.com/open-telemetry/opentelemetry-dotnet/pull/3307)) ## 1.3.0-beta.2 From cbe9d92cd3240bc7abf17cf510de297c352e04a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Neum=C3=BCller?= Date: Wed, 25 May 2022 18:07:05 +0200 Subject: [PATCH 3/8] Revert accidentally committed changes by "dotnet format". --- examples/AspNet/App_Start/RouteConfig.cs | 1 + examples/AspNet/App_Start/WebApiConfig.cs | 3 +++ examples/AspNet/Controllers/HomeController.cs | 2 ++ examples/AspNet/Controllers/WeatherForecastController.cs | 4 ++++ examples/AspNet/Global.asax.cs | 2 ++ .../SqlClientTests.cs | 1 + 6 files changed, 13 insertions(+) diff --git a/examples/AspNet/App_Start/RouteConfig.cs b/examples/AspNet/App_Start/RouteConfig.cs index 5b4496aa135..e1c6ae4df10 100644 --- a/examples/AspNet/App_Start/RouteConfig.cs +++ b/examples/AspNet/App_Start/RouteConfig.cs @@ -14,6 +14,7 @@ // limitations under the License. // +using System.Web.Mvc; using System.Web.Routing; namespace Examples.AspNet diff --git a/examples/AspNet/App_Start/WebApiConfig.cs b/examples/AspNet/App_Start/WebApiConfig.cs index 59fe1d13482..243637d65d4 100644 --- a/examples/AspNet/App_Start/WebApiConfig.cs +++ b/examples/AspNet/App_Start/WebApiConfig.cs @@ -14,6 +14,9 @@ // limitations under the License. // +using System.Net.Http.Formatting; +using System.Web.Http; + namespace Examples.AspNet { public static class WebApiConfig diff --git a/examples/AspNet/Controllers/HomeController.cs b/examples/AspNet/Controllers/HomeController.cs index 2518a41abed..f238805897d 100644 --- a/examples/AspNet/Controllers/HomeController.cs +++ b/examples/AspNet/Controllers/HomeController.cs @@ -14,6 +14,8 @@ // limitations under the License. // +using System.Web.Mvc; + namespace Examples.AspNet.Controllers { public class HomeController : Controller diff --git a/examples/AspNet/Controllers/WeatherForecastController.cs b/examples/AspNet/Controllers/WeatherForecastController.cs index 32f57270571..092bdf07104 100644 --- a/examples/AspNet/Controllers/WeatherForecastController.cs +++ b/examples/AspNet/Controllers/WeatherForecastController.cs @@ -16,9 +16,13 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; +using System.Net; +using System.Net.Http; using System.Security.Cryptography; using System.Threading.Tasks; +using System.Web.Http; using Examples.AspNet.Models; using OpenTelemetry; diff --git a/examples/AspNet/Global.asax.cs b/examples/AspNet/Global.asax.cs index 73fd15fedd5..260dda7f92b 100644 --- a/examples/AspNet/Global.asax.cs +++ b/examples/AspNet/Global.asax.cs @@ -17,6 +17,8 @@ using System; using System.Configuration; using System.Web; +using System.Web.Http; +using System.Web.Mvc; using System.Web.Routing; using OpenTelemetry; using OpenTelemetry.Exporter; diff --git a/test/OpenTelemetry.Instrumentation.SqlClient.Tests/SqlClientTests.cs b/test/OpenTelemetry.Instrumentation.SqlClient.Tests/SqlClientTests.cs index ff67fb703d2..6c1979d0d58 100644 --- a/test/OpenTelemetry.Instrumentation.SqlClient.Tests/SqlClientTests.cs +++ b/test/OpenTelemetry.Instrumentation.SqlClient.Tests/SqlClientTests.cs @@ -20,6 +20,7 @@ using System.Diagnostics; using System.Linq; using Microsoft.Data.SqlClient; +using Moq; using OpenTelemetry.Instrumentation.SqlClient.Implementation; using OpenTelemetry.Tests; using OpenTelemetry.Trace; From 4e32dc5f2b258d660c8d83859c1bcae2b3836c74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Neum=C3=BCller?= Date: Wed, 25 May 2022 18:17:27 +0200 Subject: [PATCH 4/8] Fix markdownlint. --- src/OpenTelemetry/CHANGELOG.md | 5 +++-- src/OpenTelemetry/README.md | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/OpenTelemetry/CHANGELOG.md b/src/OpenTelemetry/CHANGELOG.md index 18dad6859b2..7fe032cd62b 100644 --- a/src/OpenTelemetry/CHANGELOG.md +++ b/src/OpenTelemetry/CHANGELOG.md @@ -35,8 +35,9 @@ Released 2022-June-1 * Swallow `ObjectDisposedException` in `BatchExportProcessor` and `PeriodicExportingMetricReader`. ([#3291](https://github.com/open-telemetry/opentelemetry-dotnet/pull/3291)) -* Add `ConfigureResources` which can replace SetResourceBuilder more succinctly in most cases - and has greater flexibility (applies to TracerProvicerBuilder, MeterProviderBuilder, OpenTelemetryLoggingOptions). +* Add `ConfigureResources` which can replace SetResourceBuilder more succinctly + in most cases and has greater flexibility (applies to + TracerProvicerBuilder, MeterProviderBuilder, OpenTelemetryLoggingOptions). ([#3307](https://github.com/open-telemetry/opentelemetry-dotnet/pull/3307)) ## 1.3.0-beta.2 diff --git a/src/OpenTelemetry/README.md b/src/OpenTelemetry/README.md index 0be266dd35c..2b5d1e2acb0 100644 --- a/src/OpenTelemetry/README.md +++ b/src/OpenTelemetry/README.md @@ -242,10 +242,10 @@ The `ConfigureResource` method on `TracerProviderBuilder` can be used to set a configure the resource on the provider. When the provider is built, it automatically builds the final `Resource` from the configured `ResourceBuilder`. As with samplers, there can only be a single `Resource` associated with a provider. -It is not possible to change the resource builder *after* the provider is built, by -calling the `Build()` method on the `TracerProviderBuilder`. `ResourceBuilder` -offers various methods to construct resource comprising of multiple attributes -from various sources. +It is not possible to change the resource builder *after* the provider is +built, by calling the `Build()` method on the `TracerProviderBuilder`. +`ResourceBuilder` offers various methods to construct resource comprising +of multiple attributes from various sources. The snippet below shows configuring a custom `ResourceBuilder` to the provider. From 45a4941ed6efc06bd24ae0c2e29e14917bcac9ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Neum=C3=BCller?= Date: Wed, 25 May 2022 18:32:39 +0200 Subject: [PATCH 5/8] Update xmldoc of MeterProviderBuilderExtensions.SetResourceBuilder. --- src/OpenTelemetry/Metrics/MeterProviderBuilderExtensions.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/OpenTelemetry/Metrics/MeterProviderBuilderExtensions.cs b/src/OpenTelemetry/Metrics/MeterProviderBuilderExtensions.cs index 1a3cdc32d56..751dadc0d51 100644 --- a/src/OpenTelemetry/Metrics/MeterProviderBuilderExtensions.cs +++ b/src/OpenTelemetry/Metrics/MeterProviderBuilderExtensions.cs @@ -183,6 +183,8 @@ public static MeterProviderBuilder SetMaxMetricPointsPerMetricStream(this MeterP /// /// Sets the from which the Resource associated with /// this provider is built from. Overwrites currently set ResourceBuilder. + /// You should usually use instead + /// (call if desired). /// /// MeterProviderBuilder instance. /// from which Resource will be built. From b06808e74286812a95b6cc3d38dfee5dcaabc17d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Neum=C3=BCller?= Date: Mon, 13 Jun 2022 16:16:42 +0200 Subject: [PATCH 6/8] Rename ConfigureResources to sg ConfigureResource. --- docs/logs/customizing-the-sdk/Program.cs | 2 +- docs/logs/customizing-the-sdk/README.md | 6 +++--- examples/AspNetCore/Program.cs | 6 +++--- examples/Console/TestConsoleExporter.cs | 2 +- examples/Console/TestHttpClient.cs | 2 +- examples/Console/TestInMemoryExporter.cs | 2 +- examples/Console/TestJaegerExporter.cs | 2 +- examples/Console/TestMetrics.cs | 2 +- examples/Console/TestOTelShimWithConsoleExporter.cs | 2 +- examples/Console/TestOpenTracingShim.cs | 2 +- examples/Console/TestOtlpExporter.cs | 2 +- examples/Console/TestZipkinExporter.cs | 2 +- examples/GrpcService/Startup.cs | 2 +- src/OpenTelemetry/.publicApi/net462/PublicAPI.Unshipped.txt | 2 +- .../.publicApi/netstandard2.0/PublicAPI.Unshipped.txt | 2 +- src/OpenTelemetry/CHANGELOG.md | 2 +- src/OpenTelemetry/Logs/OpenTelemetryLoggerOptions.cs | 4 ++-- src/OpenTelemetry/Metrics/MeterProviderBuilderExtensions.cs | 4 ++-- src/OpenTelemetry/README.md | 2 +- src/OpenTelemetry/Trace/TracerProviderBuilderExtensions.cs | 4 ++-- .../Instrumentation/InstrumentedHttpClientBenchmark.cs | 2 +- test/OpenTelemetry.Tests/Trace/TracerProviderSdkTest.cs | 2 +- 22 files changed, 29 insertions(+), 29 deletions(-) diff --git a/docs/logs/customizing-the-sdk/Program.cs b/docs/logs/customizing-the-sdk/Program.cs index 4e74c286d8f..b6b3afd07d8 100644 --- a/docs/logs/customizing-the-sdk/Program.cs +++ b/docs/logs/customizing-the-sdk/Program.cs @@ -30,7 +30,7 @@ public static void Main() builder.AddOpenTelemetry(options => { options.IncludeScopes = true; - options.ConfigureResources(r => r.AddService(serviceName: "MyService", serviceVersion: "1.0.0")); + options.ConfigureResource(r => r.AddService(serviceName: "MyService", serviceVersion: "1.0.0")); options.AddConsoleExporter(); }); }); diff --git a/docs/logs/customizing-the-sdk/README.md b/docs/logs/customizing-the-sdk/README.md index ebe07bba08b..8b1d9bcb944 100644 --- a/docs/logs/customizing-the-sdk/README.md +++ b/docs/logs/customizing-the-sdk/README.md @@ -52,14 +52,14 @@ var loggerFactory = LoggerFactory.Create(builder => For more information on Processors, please review [Extending the SDK](../extending-the-sdk/README.md#processor) -### ConfigureResources +### ConfigureResource [Resource](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/sdk.md) is the immutable representation of the entity producing the telemetry. If no `Resource` is explicitly configured, the default is to use a resource indicating this [Telemetry SDK](https://github.com/open-telemetry/opentelemetry-specification/tree/main/specification/resource/semantic_conventions#telemetry-sdk). -The `ConfigureResources` method on `OpenTelemetryLoggerOptions` can be used to +The `ConfigureResource` method on `OpenTelemetryLoggerOptions` can be used to configure the `ResourceBuilder`. It is not possible to change the resources *after* creating the `LoggerFactory`. @@ -70,7 +70,7 @@ var loggerFactory = LoggerFactory.Create(builder => { builder.AddOpenTelemetry(options => { - options.ConfigureResources(r => r.AddService( + options.ConfigureResource(r => r.AddService( serviceName: "MyService", serviceVersion: "1.0.0" )); diff --git a/examples/AspNetCore/Program.cs b/examples/AspNetCore/Program.cs index 0136a364999..576dc4f7b2a 100644 --- a/examples/AspNetCore/Program.cs +++ b/examples/AspNetCore/Program.cs @@ -45,7 +45,7 @@ builder.Services.AddOpenTelemetryTracing(options => { options - .ConfigureResources(configureResources) + .ConfigureResource(configureResources) .SetSampler(new AlwaysOnSampler()) .AddHttpClientInstrumentation() .AddAspNetCoreInstrumentation(); @@ -89,7 +89,7 @@ builder.Logging.AddOpenTelemetry(options => { - options.ConfigureResources(configureResources); + options.ConfigureResource(configureResources); var logExporter = builder.Configuration.GetValue("UseLogExporter").ToLowerInvariant(); switch (logExporter) { @@ -115,7 +115,7 @@ // Metrics builder.Services.AddOpenTelemetryMetrics(options => { - options.ConfigureResources(configureResources) + options.ConfigureResource(configureResources) .AddHttpClientInstrumentation() .AddAspNetCoreInstrumentation(); diff --git a/examples/Console/TestConsoleExporter.cs b/examples/Console/TestConsoleExporter.cs index 4abcce7f7b0..031e6fc4e09 100644 --- a/examples/Console/TestConsoleExporter.cs +++ b/examples/Console/TestConsoleExporter.cs @@ -39,7 +39,7 @@ private static object RunWithActivitySource() // and use Console exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddSource("Samples.SampleClient", "Samples.SampleServer") - .ConfigureResources(res => res.AddService("console-test")) + .ConfigureResource(res => res.AddService("console-test")) .AddProcessor(new MyProcessor()) // This must be added before ConsoleExporter .AddConsoleExporter() .Build(); diff --git a/examples/Console/TestHttpClient.cs b/examples/Console/TestHttpClient.cs index 16c836abd4f..ba122c5f09a 100644 --- a/examples/Console/TestHttpClient.cs +++ b/examples/Console/TestHttpClient.cs @@ -34,7 +34,7 @@ internal static object Run() using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddHttpClientInstrumentation() - .ConfigureResources(r => r.AddService("http-service-example")) + .ConfigureResource(r => r.AddService("http-service-example")) .AddSource("http-client-test") .AddConsoleExporter() .Build(); diff --git a/examples/Console/TestInMemoryExporter.cs b/examples/Console/TestInMemoryExporter.cs index 1c653f605f1..5cfbe327417 100644 --- a/examples/Console/TestInMemoryExporter.cs +++ b/examples/Console/TestInMemoryExporter.cs @@ -51,7 +51,7 @@ private static void RunWithActivitySource(ICollection exportedItems) // and use InMemory exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddSource("Samples.SampleClient", "Samples.SampleServer") - .ConfigureResources(r => r.AddService("inmemory-test")) + .ConfigureResource(r => r.AddService("inmemory-test")) .AddInMemoryExporter(exportedItems) .Build(); diff --git a/examples/Console/TestJaegerExporter.cs b/examples/Console/TestJaegerExporter.cs index 8534beda7e9..aca3909886e 100644 --- a/examples/Console/TestJaegerExporter.cs +++ b/examples/Console/TestJaegerExporter.cs @@ -56,7 +56,7 @@ internal static object RunWithActivity(string host, int port) // Enable OpenTelemetry for the sources "Samples.SampleServer" and "Samples.SampleClient" // and use the Jaeger exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() - .ConfigureResources(r => r.AddService("jaeger-test")) + .ConfigureResource(r => r.AddService("jaeger-test")) .AddSource("Samples.SampleClient", "Samples.SampleServer") .AddJaegerExporter(o => { diff --git a/examples/Console/TestMetrics.cs b/examples/Console/TestMetrics.cs index 669788af4d1..78ee9cbed97 100644 --- a/examples/Console/TestMetrics.cs +++ b/examples/Console/TestMetrics.cs @@ -33,7 +33,7 @@ internal static object Run(MetricsOptions options) using var meter = new Meter("TestMeter"); var providerBuilder = Sdk.CreateMeterProviderBuilder() - .ConfigureResources(r => r.AddService("myservice")) + .ConfigureResource(r => r.AddService("myservice")) .AddMeter(meter.Name); // All instruments from this meter are enabled. if (options.UseExporter.Equals("otlp", StringComparison.OrdinalIgnoreCase)) diff --git a/examples/Console/TestOTelShimWithConsoleExporter.cs b/examples/Console/TestOTelShimWithConsoleExporter.cs index 26b866d9d69..31bb3c85f6b 100644 --- a/examples/Console/TestOTelShimWithConsoleExporter.cs +++ b/examples/Console/TestOTelShimWithConsoleExporter.cs @@ -28,7 +28,7 @@ internal static object Run(OpenTelemetryShimOptions options) // and use a single pipeline with a custom MyProcessor, and Console exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddSource("MyCompany.MyProduct.MyWebServer") - .ConfigureResources(r => r.AddService("MyServiceName")) + .ConfigureResource(r => r.AddService("MyServiceName")) .AddConsoleExporter() .Build(); diff --git a/examples/Console/TestOpenTracingShim.cs b/examples/Console/TestOpenTracingShim.cs index ae9995ea083..7361c3aa4d5 100644 --- a/examples/Console/TestOpenTracingShim.cs +++ b/examples/Console/TestOpenTracingShim.cs @@ -31,7 +31,7 @@ internal static object Run(OpenTracingShimOptions options) // and use Console exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddSource("MyCompany.MyProduct.MyWebServer") - .ConfigureResources(r => r.AddService("MyServiceName")) + .ConfigureResource(r => r.AddService("MyServiceName")) .AddConsoleExporter() .Build(); diff --git a/examples/Console/TestOtlpExporter.cs b/examples/Console/TestOtlpExporter.cs index 51202fd7c60..f5417e77c66 100644 --- a/examples/Console/TestOtlpExporter.cs +++ b/examples/Console/TestOtlpExporter.cs @@ -71,7 +71,7 @@ private static object RunWithActivitySource(string endpoint, string protocol) // and use OTLP exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddSource("Samples.SampleClient", "Samples.SampleServer") - .ConfigureResources(r => r.AddService("otlp-test")) + .ConfigureResource(r => r.AddService("otlp-test")) .AddOtlpExporter(opt => { // If endpoint was not specified, the proper one will be selected according to the protocol. diff --git a/examples/Console/TestZipkinExporter.cs b/examples/Console/TestZipkinExporter.cs index 4a1ee7efd91..0f6bbce2272 100644 --- a/examples/Console/TestZipkinExporter.cs +++ b/examples/Console/TestZipkinExporter.cs @@ -39,7 +39,7 @@ internal static object Run(string zipkinUri) // and use the Zipkin exporter. using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddSource("Samples.SampleClient", "Samples.SampleServer") - .ConfigureResources(r => r.AddService("zipkin-test")) + .ConfigureResource(r => r.AddService("zipkin-test")) .AddZipkinExporter(o => { o.Endpoint = new Uri(zipkinUri); diff --git a/examples/GrpcService/Startup.cs b/examples/GrpcService/Startup.cs index 5e0ab4c2574..c7034011b02 100644 --- a/examples/GrpcService/Startup.cs +++ b/examples/GrpcService/Startup.cs @@ -45,7 +45,7 @@ public void ConfigureServices(IServiceCollection services) { case "jaeger": services.AddOpenTelemetryTracing((builder) => builder - .ConfigureResources(r => r.AddService(this.Configuration.GetValue("Jaeger:ServiceName"))) + .ConfigureResource(r => r.AddService(this.Configuration.GetValue("Jaeger:ServiceName"))) .AddAspNetCoreInstrumentation() .AddJaegerExporter(jaegerOptions => { diff --git a/src/OpenTelemetry/.publicApi/net462/PublicAPI.Unshipped.txt b/src/OpenTelemetry/.publicApi/net462/PublicAPI.Unshipped.txt index 5b29faa9e81..0620ade3ab8 100644 --- a/src/OpenTelemetry/.publicApi/net462/PublicAPI.Unshipped.txt +++ b/src/OpenTelemetry/.publicApi/net462/PublicAPI.Unshipped.txt @@ -12,4 +12,4 @@ OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider() -> OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider(System.Action! configure) -> void OpenTelemetry.Logs.OpenTelemetryLoggerOptions.ConfigureResources(System.Action! configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions! ~static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureResources(this OpenTelemetry.Metrics.MeterProviderBuilder meterProviderBuilder, System.Action configure) -> OpenTelemetry.Metrics.MeterProviderBuilder -~static OpenTelemetry.Trace.TracerProviderBuilderExtensions.ConfigureResources(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, System.Action configure) -> OpenTelemetry.Trace.TracerProviderBuilder +~static OpenTelemetry.Trace.TracerProviderBuilderExtensions.ConfigureResource(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, System.Action configure) -> OpenTelemetry.Trace.TracerProviderBuilder diff --git a/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt b/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt index 5b29faa9e81..0620ade3ab8 100644 --- a/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt +++ b/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt @@ -12,4 +12,4 @@ OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider() -> OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider(System.Action! configure) -> void OpenTelemetry.Logs.OpenTelemetryLoggerOptions.ConfigureResources(System.Action! configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions! ~static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureResources(this OpenTelemetry.Metrics.MeterProviderBuilder meterProviderBuilder, System.Action configure) -> OpenTelemetry.Metrics.MeterProviderBuilder -~static OpenTelemetry.Trace.TracerProviderBuilderExtensions.ConfigureResources(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, System.Action configure) -> OpenTelemetry.Trace.TracerProviderBuilder +~static OpenTelemetry.Trace.TracerProviderBuilderExtensions.ConfigureResource(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, System.Action configure) -> OpenTelemetry.Trace.TracerProviderBuilder diff --git a/src/OpenTelemetry/CHANGELOG.md b/src/OpenTelemetry/CHANGELOG.md index 7fe032cd62b..f8d5e3e3794 100644 --- a/src/OpenTelemetry/CHANGELOG.md +++ b/src/OpenTelemetry/CHANGELOG.md @@ -35,7 +35,7 @@ Released 2022-June-1 * Swallow `ObjectDisposedException` in `BatchExportProcessor` and `PeriodicExportingMetricReader`. ([#3291](https://github.com/open-telemetry/opentelemetry-dotnet/pull/3291)) -* Add `ConfigureResources` which can replace SetResourceBuilder more succinctly +* Add `ConfigureResource` which can replace SetResourceBuilder more succinctly in most cases and has greater flexibility (applies to TracerProvicerBuilder, MeterProviderBuilder, OpenTelemetryLoggingOptions). ([#3307](https://github.com/open-telemetry/opentelemetry-dotnet/pull/3307)) diff --git a/src/OpenTelemetry/Logs/OpenTelemetryLoggerOptions.cs b/src/OpenTelemetry/Logs/OpenTelemetryLoggerOptions.cs index 0900f9271b7..d20fcce2b47 100644 --- a/src/OpenTelemetry/Logs/OpenTelemetryLoggerOptions.cs +++ b/src/OpenTelemetry/Logs/OpenTelemetryLoggerOptions.cs @@ -74,7 +74,7 @@ public OpenTelemetryLoggerOptions AddProcessor(BaseProcessor processo /// /// Sets the from which the Resource associated with /// this provider is built from. Overwrites currently set ResourceBuilder. - /// You should usually use instead + /// You should usually use instead /// (call if desired). /// /// from which Resource will be built. @@ -93,7 +93,7 @@ public OpenTelemetryLoggerOptions SetResourceBuilder(ResourceBuilder resourceBui /// /// An action which modifies the provided in-place. /// Returns for chaining. - public OpenTelemetryLoggerOptions ConfigureResources(Action configure) + public OpenTelemetryLoggerOptions ConfigureResource(Action configure) { Guard.ThrowIfNull(configure, nameof(configure)); configure(this.ResourceBuilder); diff --git a/src/OpenTelemetry/Metrics/MeterProviderBuilderExtensions.cs b/src/OpenTelemetry/Metrics/MeterProviderBuilderExtensions.cs index 751dadc0d51..c9ab4726712 100644 --- a/src/OpenTelemetry/Metrics/MeterProviderBuilderExtensions.cs +++ b/src/OpenTelemetry/Metrics/MeterProviderBuilderExtensions.cs @@ -183,7 +183,7 @@ public static MeterProviderBuilder SetMaxMetricPointsPerMetricStream(this MeterP /// /// Sets the from which the Resource associated with /// this provider is built from. Overwrites currently set ResourceBuilder. - /// You should usually use instead + /// You should usually use instead /// (call if desired). /// /// MeterProviderBuilder instance. @@ -206,7 +206,7 @@ public static MeterProviderBuilder SetResourceBuilder(this MeterProviderBuilder /// MeterProviderBuilder instance. /// An action which modifies the provided in-place. /// Returns for chaining. - public static MeterProviderBuilder ConfigureResources(this MeterProviderBuilder meterProviderBuilder, Action configure) + public static MeterProviderBuilder ConfigureResource(this MeterProviderBuilder meterProviderBuilder, Action configure) { Guard.ThrowIfNull(meterProviderBuilder, nameof(meterProviderBuilder)); Guard.ThrowIfNull(configure, nameof(configure)); diff --git a/src/OpenTelemetry/README.md b/src/OpenTelemetry/README.md index 2b5d1e2acb0..0f41b3808da 100644 --- a/src/OpenTelemetry/README.md +++ b/src/OpenTelemetry/README.md @@ -255,7 +255,7 @@ using OpenTelemetry.Resources; using OpenTelemetry.Trace; using var tracerProvider = Sdk.CreateTracerProviderBuilder() - .ConfigureResources(r => r.AddService("MyServiceName")) + .ConfigureResource(r => r.AddService("MyServiceName")) .Build(); ``` diff --git a/src/OpenTelemetry/Trace/TracerProviderBuilderExtensions.cs b/src/OpenTelemetry/Trace/TracerProviderBuilderExtensions.cs index 1a2ce2ba4a6..24f26e98e01 100644 --- a/src/OpenTelemetry/Trace/TracerProviderBuilderExtensions.cs +++ b/src/OpenTelemetry/Trace/TracerProviderBuilderExtensions.cs @@ -62,7 +62,7 @@ public static TracerProviderBuilder SetSampler(this TracerProviderBuilder tracer /// /// Sets the from which the Resource associated with /// this provider is built from. Overwrites currently set ResourceBuilder. - /// You should usually use instead + /// You should usually use instead /// (call if desired). /// /// TracerProviderBuilder instance. @@ -85,7 +85,7 @@ public static TracerProviderBuilder SetResourceBuilder(this TracerProviderBuilde /// TracerProviderBuilder instance. /// An action which modifies the provided in-place. /// Returns for chaining. - public static TracerProviderBuilder ConfigureResources(this TracerProviderBuilder tracerProviderBuilder, Action configure) + public static TracerProviderBuilder ConfigureResource(this TracerProviderBuilder tracerProviderBuilder, Action configure) { Guard.ThrowIfNull(tracerProviderBuilder, nameof(tracerProviderBuilder)); Guard.ThrowIfNull(configure, nameof(configure)); diff --git a/test/Benchmarks/Instrumentation/InstrumentedHttpClientBenchmark.cs b/test/Benchmarks/Instrumentation/InstrumentedHttpClientBenchmark.cs index 65c143afb29..ff2555eaeb3 100644 --- a/test/Benchmarks/Instrumentation/InstrumentedHttpClientBenchmark.cs +++ b/test/Benchmarks/Instrumentation/InstrumentedHttpClientBenchmark.cs @@ -52,7 +52,7 @@ public void GlobalSetup() this.tracerProvider = Sdk.CreateTracerProviderBuilder() .AddHttpClientInstrumentation() - .ConfigureResources(r => r.AddService(ServiceName)) + .ConfigureResource(r => r.AddService(ServiceName)) .AddSource(SourceName) .Build(); diff --git a/test/OpenTelemetry.Tests/Trace/TracerProviderSdkTest.cs b/test/OpenTelemetry.Tests/Trace/TracerProviderSdkTest.cs index ed4d0490aaf..7463df95843 100644 --- a/test/OpenTelemetry.Tests/Trace/TracerProviderSdkTest.cs +++ b/test/OpenTelemetry.Tests/Trace/TracerProviderSdkTest.cs @@ -1076,7 +1076,7 @@ public void TracerProviderSdkBuildsWithSDKResource(bool useConfigure) var tracerProvider = useConfigure ? Sdk.CreateTracerProviderBuilder().SetResourceBuilder( ResourceBuilder.CreateDefault().AddTelemetrySdk()).Build() : - Sdk.CreateTracerProviderBuilder().ConfigureResources(r => r.AddTelemetrySdk()).Build(); + Sdk.CreateTracerProviderBuilder().ConfigureResource(r => r.AddTelemetrySdk()).Build(); var resource = tracerProvider.GetResource(); var attributes = resource.Attributes; From f9b7cad4afcb154d936b00e8bcc1f3b567898628 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Neum=C3=BCller?= Date: Mon, 20 Jun 2022 12:58:04 +0200 Subject: [PATCH 7/8] Fix net462, rename in sample. --- examples/AspNetCore/Program.cs | 8 ++++---- .../.publicApi/net462/PublicAPI.Unshipped.txt | 4 ++-- .../.publicApi/netstandard2.0/PublicAPI.Unshipped.txt | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/AspNetCore/Program.cs b/examples/AspNetCore/Program.cs index 576dc4f7b2a..0ee7a24c22a 100644 --- a/examples/AspNetCore/Program.cs +++ b/examples/AspNetCore/Program.cs @@ -38,14 +38,14 @@ _ => "AspNetCoreExampleService", }; -Action configureResources = r => r.AddService( +Action configureResource = r => r.AddService( serviceName, serviceVersion: assemblyVersion, serviceInstanceId: Environment.MachineName); // Traces builder.Services.AddOpenTelemetryTracing(options => { options - .ConfigureResource(configureResources) + .ConfigureResource(configureResource) .SetSampler(new AlwaysOnSampler()) .AddHttpClientInstrumentation() .AddAspNetCoreInstrumentation(); @@ -89,7 +89,7 @@ builder.Logging.AddOpenTelemetry(options => { - options.ConfigureResource(configureResources); + options.ConfigureResource(configureResource); var logExporter = builder.Configuration.GetValue("UseLogExporter").ToLowerInvariant(); switch (logExporter) { @@ -115,7 +115,7 @@ // Metrics builder.Services.AddOpenTelemetryMetrics(options => { - options.ConfigureResource(configureResources) + options.ConfigureResource(configureResource) .AddHttpClientInstrumentation() .AddAspNetCoreInstrumentation(); diff --git a/src/OpenTelemetry/.publicApi/net462/PublicAPI.Unshipped.txt b/src/OpenTelemetry/.publicApi/net462/PublicAPI.Unshipped.txt index 0620ade3ab8..ecaf006aa47 100644 --- a/src/OpenTelemetry/.publicApi/net462/PublicAPI.Unshipped.txt +++ b/src/OpenTelemetry/.publicApi/net462/PublicAPI.Unshipped.txt @@ -10,6 +10,6 @@ OpenTelemetry.Logs.LogRecord.TraceState.set -> void OpenTelemetry.Logs.OpenTelemetryLoggerProvider.ForceFlush(int timeoutMilliseconds = -1) -> bool OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider() -> void OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider(System.Action! configure) -> void -OpenTelemetry.Logs.OpenTelemetryLoggerOptions.ConfigureResources(System.Action! configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions! -~static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureResources(this OpenTelemetry.Metrics.MeterProviderBuilder meterProviderBuilder, System.Action configure) -> OpenTelemetry.Metrics.MeterProviderBuilder +OpenTelemetry.Logs.OpenTelemetryLoggerOptions.ConfigureResource(System.Action! configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions! +~static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureResource(this OpenTelemetry.Metrics.MeterProviderBuilder meterProviderBuilder, System.Action configure) -> OpenTelemetry.Metrics.MeterProviderBuilder ~static OpenTelemetry.Trace.TracerProviderBuilderExtensions.ConfigureResource(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, System.Action configure) -> OpenTelemetry.Trace.TracerProviderBuilder diff --git a/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt b/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt index 0620ade3ab8..ecaf006aa47 100644 --- a/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt +++ b/src/OpenTelemetry/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt @@ -10,6 +10,6 @@ OpenTelemetry.Logs.LogRecord.TraceState.set -> void OpenTelemetry.Logs.OpenTelemetryLoggerProvider.ForceFlush(int timeoutMilliseconds = -1) -> bool OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider() -> void OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider(System.Action! configure) -> void -OpenTelemetry.Logs.OpenTelemetryLoggerOptions.ConfigureResources(System.Action! configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions! -~static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureResources(this OpenTelemetry.Metrics.MeterProviderBuilder meterProviderBuilder, System.Action configure) -> OpenTelemetry.Metrics.MeterProviderBuilder +OpenTelemetry.Logs.OpenTelemetryLoggerOptions.ConfigureResource(System.Action! configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions! +~static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureResource(this OpenTelemetry.Metrics.MeterProviderBuilder meterProviderBuilder, System.Action configure) -> OpenTelemetry.Metrics.MeterProviderBuilder ~static OpenTelemetry.Trace.TracerProviderBuilderExtensions.ConfigureResource(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, System.Action configure) -> OpenTelemetry.Trace.TracerProviderBuilder From d4ba18740d67b8c2ef4c36a76af3260437a56cd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Neum=C3=BCller?= Date: Mon, 20 Jun 2022 13:11:20 +0200 Subject: [PATCH 8/8] Add to more missed targets. --- src/OpenTelemetry/.publicApi/net6.0/PublicAPI.Unshipped.txt | 5 ++++- .../.publicApi/netstandard2.1/PublicAPI.Unshipped.txt | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/OpenTelemetry/.publicApi/net6.0/PublicAPI.Unshipped.txt b/src/OpenTelemetry/.publicApi/net6.0/PublicAPI.Unshipped.txt index 3f5fd985f93..43156ee3c3a 100644 --- a/src/OpenTelemetry/.publicApi/net6.0/PublicAPI.Unshipped.txt +++ b/src/OpenTelemetry/.publicApi/net6.0/PublicAPI.Unshipped.txt @@ -7,6 +7,9 @@ OpenTelemetry.Logs.LogRecord.Timestamp.set -> void OpenTelemetry.Logs.LogRecord.TraceFlags.set -> void OpenTelemetry.Logs.LogRecord.TraceId.set -> void OpenTelemetry.Logs.LogRecord.TraceState.set -> void +OpenTelemetry.Logs.OpenTelemetryLoggerOptions.ConfigureResource(System.Action! configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions! OpenTelemetry.Logs.OpenTelemetryLoggerProvider.ForceFlush(int timeoutMilliseconds = -1) -> bool OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider() -> void -OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider(System.Action! configure) -> void \ No newline at end of file +OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider(System.Action! configure) -> void +~static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureResource(this OpenTelemetry.Metrics.MeterProviderBuilder meterProviderBuilder, System.Action configure) -> OpenTelemetry.Metrics.MeterProviderBuilder +~static OpenTelemetry.Trace.TracerProviderBuilderExtensions.ConfigureResource(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, System.Action configure) -> OpenTelemetry.Trace.TracerProviderBuilder \ No newline at end of file diff --git a/src/OpenTelemetry/.publicApi/netstandard2.1/PublicAPI.Unshipped.txt b/src/OpenTelemetry/.publicApi/netstandard2.1/PublicAPI.Unshipped.txt index 3f5fd985f93..43156ee3c3a 100644 --- a/src/OpenTelemetry/.publicApi/netstandard2.1/PublicAPI.Unshipped.txt +++ b/src/OpenTelemetry/.publicApi/netstandard2.1/PublicAPI.Unshipped.txt @@ -7,6 +7,9 @@ OpenTelemetry.Logs.LogRecord.Timestamp.set -> void OpenTelemetry.Logs.LogRecord.TraceFlags.set -> void OpenTelemetry.Logs.LogRecord.TraceId.set -> void OpenTelemetry.Logs.LogRecord.TraceState.set -> void +OpenTelemetry.Logs.OpenTelemetryLoggerOptions.ConfigureResource(System.Action! configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions! OpenTelemetry.Logs.OpenTelemetryLoggerProvider.ForceFlush(int timeoutMilliseconds = -1) -> bool OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider() -> void -OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider(System.Action! configure) -> void \ No newline at end of file +OpenTelemetry.Logs.OpenTelemetryLoggerProvider.OpenTelemetryLoggerProvider(System.Action! configure) -> void +~static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureResource(this OpenTelemetry.Metrics.MeterProviderBuilder meterProviderBuilder, System.Action configure) -> OpenTelemetry.Metrics.MeterProviderBuilder +~static OpenTelemetry.Trace.TracerProviderBuilderExtensions.ConfigureResource(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, System.Action configure) -> OpenTelemetry.Trace.TracerProviderBuilder \ No newline at end of file