diff --git a/src/OpenTelemetry.Api/AssemblyInfo.cs b/src/OpenTelemetry.Api/AssemblyInfo.cs index 1da065d0a..3d46ffb47 100644 --- a/src/OpenTelemetry.Api/AssemblyInfo.cs +++ b/src/OpenTelemetry.Api/AssemblyInfo.cs @@ -20,6 +20,7 @@ using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("OpenTelemetry.Api.ProviderBuilderExtensions" + AssemblyInfo.PublicKey)] [assembly: InternalsVisibleTo("OpenTelemetry.Api.ProviderBuilderExtensions.Tests" + AssemblyInfo.PublicKey)] [assembly: InternalsVisibleTo("OpenTelemetry.Api.Tests" + AssemblyInfo.PublicKey)] +[assembly: InternalsVisibleTo("OpenTelemetry.Exporter.InMemory" + AssemblyInfo.PublicKey)] [assembly: InternalsVisibleTo("OpenTelemetry.Extensions.Hosting" + AssemblyInfo.PublicKey)] [assembly: InternalsVisibleTo("OpenTelemetry.Extensions.Hosting.Tests" + AssemblyInfo.PublicKey)] [assembly: InternalsVisibleTo("OpenTelemetry.Shims.OpenTracing.Tests" + AssemblyInfo.PublicKey)] diff --git a/src/OpenTelemetry.Exporter.InMemory/InMemoryExporterLoggingExtensions.cs b/src/OpenTelemetry.Exporter.InMemory/InMemoryExporterLoggingExtensions.cs index 4b722830c..f4427cf5e 100644 --- a/src/OpenTelemetry.Exporter.InMemory/InMemoryExporterLoggingExtensions.cs +++ b/src/OpenTelemetry.Exporter.InMemory/InMemoryExporterLoggingExtensions.cs @@ -26,25 +26,48 @@ namespace OpenTelemetry.Logs /// /// options to use. /// Collection which will be populated with the exported . - /// The instance of to chain the calls. - public static OpenTelemetryLoggerOptions AddInMemoryExporter(this OpenTelemetryLoggerOptions loggerOptions, ICollection exportedItems) + /// The supplied instance of to chain the calls. + /// todo: [Obsolete("Call LoggerProviderBuilder.AddInMemoryExporter instead this method will be removed in a future version.")] + public static OpenTelemetryLoggerOptions AddInMemoryExporter( + this OpenTelemetryLoggerOptions loggerOptions, + ICollection exportedItems) { Guard.ThrowIfNull(loggerOptions); Guard.ThrowIfNull(exportedItems); - var logExporter = new InMemoryExporter( - exportFunc: (in Batch batch) => ExportLogRecord(in batch, exportedItems)); + var logExporter = BuildExporter(exportedItems); - return loggerOptions.AddProcessor(new SimpleLogRecordExportProcessor(logExporter)); + return loggerOptions.AddProcessor( + new SimpleLogRecordExportProcessor(logExporter)); + } + + /// + /// Adds InMemory exporter to the LoggerProviderBuilder. + /// + /// . + /// Collection which will be populated with the exported . + /// The supplied instance of to chain the calls. + internal static LoggerProviderBuilder AddInMemoryExporter( + this LoggerProviderBuilder loggerProviderBuilder, + ICollection exportedItems) + { + Guard.ThrowIfNull(loggerProviderBuilder); + Guard.ThrowIfNull(exportedItems); + + var logExporter = BuildExporter(exportedItems); + + return loggerProviderBuilder.AddProcessor( + new SimpleLogRecordExportProcessor(logExporter)); + } + + private static InMemoryExporter BuildExporter(ICollection exportedItems) + { + return new InMemoryExporter( + exportFunc: (in Batch batch) => ExportLogRecord(in batch, exportedItems)); } private static ExportResult ExportLogRecord(in Batch batch, ICollection exportedItems) { - if (exportedItems == null) - { - return ExportResult.Failure; - } - foreach (var log in batch) { exportedItems.Add(log.Copy()); diff --git a/src/OpenTelemetry.Exporter.InMemory/OpenTelemetry.Exporter.InMemory.csproj b/src/OpenTelemetry.Exporter.InMemory/OpenTelemetry.Exporter.InMemory.csproj index 20909e3de..69b4a1daf 100644 --- a/src/OpenTelemetry.Exporter.InMemory/OpenTelemetry.Exporter.InMemory.csproj +++ b/src/OpenTelemetry.Exporter.InMemory/OpenTelemetry.Exporter.InMemory.csproj @@ -20,7 +20,9 @@ +