diff --git a/src/OpenTelemetry.Exporter.InMemory/CHANGELOG.md b/src/OpenTelemetry.Exporter.InMemory/CHANGELOG.md index 7f8b02afcfa..e9367ea4bd7 100644 --- a/src/OpenTelemetry.Exporter.InMemory/CHANGELOG.md +++ b/src/OpenTelemetry.Exporter.InMemory/CHANGELOG.md @@ -2,18 +2,23 @@ ## Unreleased +* Add Metrics + support.([#2192](https://github.com/open-telemetry/opentelemetry-dotnet/pull/2192)) + ## 1.2.0-alpha1 Released 2021-Jul-23 -* Removes support for .NET Framework 4.5.2 and 4.6. The minimum .NET Framework version - supported is .NET 4.6.1. ([#2138](https://github.com/open-telemetry/opentelemetry-dotnet/issues/2138)) +* Removes support for .NET Framework 4.5.2 and 4.6. The minimum .NET Framework + version supported is .NET 4.6.1. + ([#2138](https://github.com/open-telemetry/opentelemetry-dotnet/issues/2138)) ## 1.1.0 Released 2021-Jul-12 -* Supports OpenTelemetry.Extensions.Hosting based configuration for `InMemoryExporter` +* Supports OpenTelemetry.Extensions.Hosting based configuration for + `InMemoryExporter` ([#2129](https://github.com/open-telemetry/opentelemetry-dotnet/pull/2129)) ## 1.1.0-rc1 @@ -52,8 +57,8 @@ Released 2021-Feb-04 Released 2021-Jan-29 -* `AddInMemoryExporter` extension method for traces moved from - `OpenTelemetry` namespace to `OpenTelemetry.Trace` namespace. +* `AddInMemoryExporter` extension method for traces moved from `OpenTelemetry` + namespace to `OpenTelemetry.Trace` namespace. ([#1576](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1576)) * `AddInMemoryExporter` extension method for logs moved from `Microsoft.Extensions.Logging` namespace to `OpenTelemetry.Logs` namespace. diff --git a/src/OpenTelemetry.Exporter.InMemory/InMemoryExporterMetricHelperExtensions.cs b/src/OpenTelemetry.Exporter.InMemory/InMemoryExporterMetricHelperExtensions.cs new file mode 100644 index 00000000000..9fbcda9eba4 --- /dev/null +++ b/src/OpenTelemetry.Exporter.InMemory/InMemoryExporterMetricHelperExtensions.cs @@ -0,0 +1,50 @@ +// +// Copyright The OpenTelemetry Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +using System; +using System.Collections.Generic; +using OpenTelemetry.Exporter; + +namespace OpenTelemetry.Metrics +{ + public static class InMemoryExporterMetricHelperExtensions + { + /// + /// Adds InMemory exporter to the TracerProvider. + /// + /// builder to use. + /// Collection which will be populated with the exported MetricItem. + /// Exporter configuration options. + /// The instance of to chain the calls. + [System.Diagnostics.CodeAnalysis.SuppressMessage("Reliability", "CA2000:Dispose objects before losing scope", Justification = "The objects should not be disposed.")] + public static MeterProviderBuilder AddInMemoryExporter(this MeterProviderBuilder builder, ICollection exportedItems, Action configure = null) + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + if (exportedItems == null) + { + throw new ArgumentNullException(nameof(exportedItems)); + } + + var options = new InMemoryExporterOptions(); + configure?.Invoke(options); + return builder.AddMetricProcessor(new PushMetricProcessor(new InMemoryExporter(exportedItems), options.MetricExportInterval, options.IsDelta)); + } + } +} diff --git a/src/OpenTelemetry.Exporter.InMemory/InMemoryExporterOptions.cs b/src/OpenTelemetry.Exporter.InMemory/InMemoryExporterOptions.cs new file mode 100644 index 00000000000..17df3ec92ee --- /dev/null +++ b/src/OpenTelemetry.Exporter.InMemory/InMemoryExporterOptions.cs @@ -0,0 +1,32 @@ +// +// Copyright The OpenTelemetry Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace OpenTelemetry.Exporter +{ + public class InMemoryExporterOptions + { + /// + /// Gets or sets the metric export interval. + /// + public int MetricExportInterval { get; set; } = 1000; + + /// + /// Gets or sets a value indicating whether to export Delta + /// values or not (Cumulative). + /// + public bool IsDelta { get; set; } = true; + } +}