Skip to content

Commit e383b5d

Browse files
authored
[sdk + otlp] Add log processor factory overload (#4916)
1 parent f9c300b commit e383b5d

File tree

18 files changed

+534
-130
lines changed

18 files changed

+534
-130
lines changed
Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1+
#nullable enable
12
OpenTelemetry.Exporter.OtlpExporterOptions
2-
OpenTelemetry.Exporter.OtlpExporterOptions.BatchExportProcessorOptions.get -> OpenTelemetry.BatchExportProcessorOptions<System.Diagnostics.Activity>
3-
OpenTelemetry.Exporter.OtlpExporterOptions.BatchExportProcessorOptions.set -> void
4-
OpenTelemetry.Exporter.OtlpExporterOptions.Endpoint.get -> System.Uri
5-
OpenTelemetry.Exporter.OtlpExporterOptions.Endpoint.set -> void
3+
~OpenTelemetry.Exporter.OtlpExporterOptions.BatchExportProcessorOptions.get -> OpenTelemetry.BatchExportProcessorOptions<System.Diagnostics.Activity>
4+
~OpenTelemetry.Exporter.OtlpExporterOptions.BatchExportProcessorOptions.set -> void
5+
~OpenTelemetry.Exporter.OtlpExporterOptions.Endpoint.get -> System.Uri
6+
~OpenTelemetry.Exporter.OtlpExporterOptions.Endpoint.set -> void
67
OpenTelemetry.Exporter.OtlpExporterOptions.ExportProcessorType.get -> OpenTelemetry.ExportProcessorType
78
OpenTelemetry.Exporter.OtlpExporterOptions.ExportProcessorType.set -> void
8-
OpenTelemetry.Exporter.OtlpExporterOptions.Headers.get -> string
9-
OpenTelemetry.Exporter.OtlpExporterOptions.Headers.set -> void
10-
OpenTelemetry.Exporter.OtlpExporterOptions.HttpClientFactory.get -> System.Func<System.Net.Http.HttpClient>
11-
OpenTelemetry.Exporter.OtlpExporterOptions.HttpClientFactory.set -> void
9+
~OpenTelemetry.Exporter.OtlpExporterOptions.Headers.get -> string
10+
~OpenTelemetry.Exporter.OtlpExporterOptions.Headers.set -> void
11+
~OpenTelemetry.Exporter.OtlpExporterOptions.HttpClientFactory.get -> System.Func<System.Net.Http.HttpClient>
12+
~OpenTelemetry.Exporter.OtlpExporterOptions.HttpClientFactory.set -> void
1213
OpenTelemetry.Exporter.OtlpExporterOptions.OtlpExporterOptions() -> void
1314
OpenTelemetry.Exporter.OtlpExporterOptions.Protocol.get -> OpenTelemetry.Exporter.OtlpExportProtocol
1415
OpenTelemetry.Exporter.OtlpExporterOptions.Protocol.set -> void
@@ -18,24 +19,24 @@ OpenTelemetry.Exporter.OtlpExportProtocol
1819
OpenTelemetry.Exporter.OtlpExportProtocol.Grpc = 0 -> OpenTelemetry.Exporter.OtlpExportProtocol
1920
OpenTelemetry.Exporter.OtlpExportProtocol.HttpProtobuf = 1 -> OpenTelemetry.Exporter.OtlpExportProtocol
2021
OpenTelemetry.Exporter.OtlpMetricExporter
21-
OpenTelemetry.Exporter.OtlpMetricExporter.OtlpMetricExporter(OpenTelemetry.Exporter.OtlpExporterOptions options) -> void
22+
~OpenTelemetry.Exporter.OtlpMetricExporter.OtlpMetricExporter(OpenTelemetry.Exporter.OtlpExporterOptions options) -> void
2223
OpenTelemetry.Exporter.OtlpTraceExporter
23-
OpenTelemetry.Exporter.OtlpTraceExporter.OtlpTraceExporter(OpenTelemetry.Exporter.OtlpExporterOptions options) -> void
24+
~OpenTelemetry.Exporter.OtlpTraceExporter.OtlpTraceExporter(OpenTelemetry.Exporter.OtlpExporterOptions options) -> void
2425
OpenTelemetry.Logs.OtlpLogExporterHelperExtensions
2526
OpenTelemetry.Metrics.OtlpMetricExporterExtensions
2627
OpenTelemetry.Trace.OtlpTraceExporterHelperExtensions
27-
override OpenTelemetry.Exporter.OtlpMetricExporter.Export(in OpenTelemetry.Batch<OpenTelemetry.Metrics.Metric> metrics) -> OpenTelemetry.ExportResult
28+
~override OpenTelemetry.Exporter.OtlpMetricExporter.Export(in OpenTelemetry.Batch<OpenTelemetry.Metrics.Metric> metrics) -> OpenTelemetry.ExportResult
2829
override OpenTelemetry.Exporter.OtlpMetricExporter.OnShutdown(int timeoutMilliseconds) -> bool
29-
override OpenTelemetry.Exporter.OtlpTraceExporter.Export(in OpenTelemetry.Batch<System.Diagnostics.Activity> activityBatch) -> OpenTelemetry.ExportResult
30+
~override OpenTelemetry.Exporter.OtlpTraceExporter.Export(in OpenTelemetry.Batch<System.Diagnostics.Activity> activityBatch) -> OpenTelemetry.ExportResult
3031
override OpenTelemetry.Exporter.OtlpTraceExporter.OnShutdown(int timeoutMilliseconds) -> bool
31-
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
32-
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions, OpenTelemetry.Logs.LogRecordExportProcessorOptions> configureExporterAndProcessor) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
33-
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions> configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
34-
static OpenTelemetry.Metrics.OtlpMetricExporterExtensions.AddOtlpExporter(this OpenTelemetry.Metrics.MeterProviderBuilder builder) -> OpenTelemetry.Metrics.MeterProviderBuilder
35-
static OpenTelemetry.Metrics.OtlpMetricExporterExtensions.AddOtlpExporter(this OpenTelemetry.Metrics.MeterProviderBuilder builder, string name, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions, OpenTelemetry.Metrics.MetricReaderOptions> configureExporterAndMetricReader) -> OpenTelemetry.Metrics.MeterProviderBuilder
36-
static OpenTelemetry.Metrics.OtlpMetricExporterExtensions.AddOtlpExporter(this OpenTelemetry.Metrics.MeterProviderBuilder builder, string name, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions> configureExporter) -> OpenTelemetry.Metrics.MeterProviderBuilder
37-
static OpenTelemetry.Metrics.OtlpMetricExporterExtensions.AddOtlpExporter(this OpenTelemetry.Metrics.MeterProviderBuilder builder, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions, OpenTelemetry.Metrics.MetricReaderOptions> configureExporterAndMetricReader) -> OpenTelemetry.Metrics.MeterProviderBuilder
38-
static OpenTelemetry.Metrics.OtlpMetricExporterExtensions.AddOtlpExporter(this OpenTelemetry.Metrics.MeterProviderBuilder builder, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions> configureExporter) -> OpenTelemetry.Metrics.MeterProviderBuilder
39-
static OpenTelemetry.Trace.OtlpTraceExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Trace.TracerProviderBuilder builder) -> OpenTelemetry.Trace.TracerProviderBuilder
40-
static OpenTelemetry.Trace.OtlpTraceExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Trace.TracerProviderBuilder builder, string name, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
41-
static OpenTelemetry.Trace.OtlpTraceExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Trace.TracerProviderBuilder builder, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
32+
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions! loggerOptions) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions!
33+
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions! loggerOptions, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions!, OpenTelemetry.Logs.LogRecordExportProcessorOptions!>! configureExporterAndProcessor) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions!
34+
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions! loggerOptions, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions!>! configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions!
35+
static OpenTelemetry.Metrics.OtlpMetricExporterExtensions.AddOtlpExporter(this OpenTelemetry.Metrics.MeterProviderBuilder! builder) -> OpenTelemetry.Metrics.MeterProviderBuilder!
36+
static OpenTelemetry.Metrics.OtlpMetricExporterExtensions.AddOtlpExporter(this OpenTelemetry.Metrics.MeterProviderBuilder! builder, string? name, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions!, OpenTelemetry.Metrics.MetricReaderOptions!>? configureExporterAndMetricReader) -> OpenTelemetry.Metrics.MeterProviderBuilder!
37+
static OpenTelemetry.Metrics.OtlpMetricExporterExtensions.AddOtlpExporter(this OpenTelemetry.Metrics.MeterProviderBuilder! builder, string? name, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions!>? configure) -> OpenTelemetry.Metrics.MeterProviderBuilder!
38+
static OpenTelemetry.Metrics.OtlpMetricExporterExtensions.AddOtlpExporter(this OpenTelemetry.Metrics.MeterProviderBuilder! builder, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions!, OpenTelemetry.Metrics.MetricReaderOptions!>! configureExporterAndMetricReader) -> OpenTelemetry.Metrics.MeterProviderBuilder!
39+
static OpenTelemetry.Metrics.OtlpMetricExporterExtensions.AddOtlpExporter(this OpenTelemetry.Metrics.MeterProviderBuilder! builder, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions!>! configure) -> OpenTelemetry.Metrics.MeterProviderBuilder!
40+
static OpenTelemetry.Trace.OtlpTraceExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Trace.TracerProviderBuilder! builder) -> OpenTelemetry.Trace.TracerProviderBuilder!
41+
static OpenTelemetry.Trace.OtlpTraceExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Trace.TracerProviderBuilder! builder, string? name, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions!>? configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
42+
static OpenTelemetry.Trace.OtlpTraceExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Trace.TracerProviderBuilder! builder, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions!>! configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
#nullable enable
12
OpenTelemetry.Exporter.OtlpLogExporter
2-
OpenTelemetry.Exporter.OtlpLogExporter.OtlpLogExporter(OpenTelemetry.Exporter.OtlpExporterOptions options) -> void
3-
override OpenTelemetry.Exporter.OtlpLogExporter.Export(in OpenTelemetry.Batch<OpenTelemetry.Logs.LogRecord> logRecordBatch) -> OpenTelemetry.ExportResult
3+
OpenTelemetry.Exporter.OtlpLogExporter.OtlpLogExporter(OpenTelemetry.Exporter.OtlpExporterOptions! options) -> void
4+
override OpenTelemetry.Exporter.OtlpLogExporter.Export(in OpenTelemetry.Batch<OpenTelemetry.Logs.LogRecord!> logRecordBatch) -> OpenTelemetry.ExportResult
5+
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions! loggerOptions, string? name, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions!, OpenTelemetry.Logs.LogRecordExportProcessorOptions!>? configureExporterAndProcessor) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions!
6+
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions! loggerOptions, string? name, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions!>? configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions!

src/OpenTelemetry.Exporter.OpenTelemetryProtocol/CHANGELOG.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,18 @@
22

33
## Unreleased
44

5-
* Made `OpenTelemetry.Exporter.OtlpLogExporter` public. ([#4979](https://github.com/open-telemetry/opentelemetry-dotnet/pull/4979))
5+
* Made `OpenTelemetry.Exporter.OtlpLogExporter` public.
6+
([#4979](https://github.com/open-telemetry/opentelemetry-dotnet/pull/4979))
7+
8+
* Updated the `OpenTelemetryLoggerOptions.AddOtlpExporter` extension to retrieve
9+
`OtlpExporterOptions` and `LogRecordExportProcessorOptions` using the
10+
`IServiceProvider` / Options API so that they can be controlled via
11+
`IConfiguration` (similar to metrics and traces).
12+
([#4916](https://github.com/open-telemetry/opentelemetry-dotnet/pull/4916))
13+
14+
* Added an `OpenTelemetryLoggerOptions.AddOtlpExporter` extension overload which
15+
accepts a `name` parameter to support named options.
16+
([#4916](https://github.com/open-telemetry/opentelemetry-dotnet/pull/4916))
617

718
## 1.7.0-alpha.1
819

src/OpenTelemetry.Exporter.OpenTelemetryProtocol/OtlpExporterOptions.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,12 +199,17 @@ public Uri Endpoint
199199

200200
internal static void RegisterOtlpExporterOptionsFactory(IServiceCollection services)
201201
{
202-
services.RegisterOptionsFactory(
203-
(sp, configuration, name) => new OtlpExporterOptions(
204-
configuration,
205-
sp.GetRequiredService<IOptionsMonitor<BatchExportActivityProcessorOptions>>().Get(name)));
202+
services.RegisterOptionsFactory(CreateOtlpExporterOptions);
206203
}
207204

205+
internal static OtlpExporterOptions CreateOtlpExporterOptions(
206+
IServiceProvider serviceProvider,
207+
IConfiguration configuration,
208+
string name)
209+
=> new(
210+
configuration,
211+
serviceProvider.GetRequiredService<IOptionsMonitor<BatchExportActivityProcessorOptions>>().Get(name));
212+
208213
private static string GetUserAgentString()
209214
{
210215
try

src/OpenTelemetry.Exporter.OpenTelemetryProtocol/OtlpLogExporter.cs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
// limitations under the License.
1515
// </copyright>
1616

17+
#nullable enable
18+
1719
using System.Diagnostics;
1820
using OpenTelemetry.Exporter.OpenTelemetryProtocol.Implementation;
1921
using OpenTelemetry.Exporter.OpenTelemetryProtocol.Implementation.ExportClient;
@@ -33,14 +35,14 @@ public sealed class OtlpLogExporter : BaseExporter<LogRecord>
3335
private readonly IExportClient<OtlpCollector.ExportLogsServiceRequest> exportClient;
3436
private readonly OtlpLogRecordTransformer otlpLogRecordTransformer;
3537

36-
private OtlpResource.Resource processResource;
38+
private OtlpResource.Resource? processResource;
3739

3840
/// <summary>
3941
/// Initializes a new instance of the <see cref="OtlpLogExporter"/> class.
4042
/// </summary>
4143
/// <param name="options">Configuration options for the exporter.</param>
4244
public OtlpLogExporter(OtlpExporterOptions options)
43-
: this(options, new(), null)
45+
: this(options, sdkLimitOptions: new(), experimentalOptions: new(), exportClient: null)
4446
{
4547
}
4648

@@ -49,14 +51,17 @@ public OtlpLogExporter(OtlpExporterOptions options)
4951
/// </summary>
5052
/// <param name="exporterOptions">Configuration options for the exporter.</param>
5153
/// <param name="sdkLimitOptions"><see cref="SdkLimitOptions"/>.</param>
54+
/// <param name="experimentalOptions"><see cref="ExperimentalOptions"/>.</param>
5255
/// <param name="exportClient">Client used for sending export request.</param>
5356
internal OtlpLogExporter(
5457
OtlpExporterOptions exporterOptions,
5558
SdkLimitOptions sdkLimitOptions,
56-
IExportClient<OtlpCollector.ExportLogsServiceRequest> exportClient = null)
59+
ExperimentalOptions experimentalOptions,
60+
IExportClient<OtlpCollector.ExportLogsServiceRequest>? exportClient = null)
5761
{
5862
Debug.Assert(exporterOptions != null, "exporterOptions was null");
5963
Debug.Assert(sdkLimitOptions != null, "sdkLimitOptions was null");
64+
Debug.Assert(experimentalOptions != null, "experimentalOptions was null");
6065

6166
// Each of the Otlp exporters: Traces, Metrics, and Logs set the same value for `OtlpKeyValueTransformer.LogUnsupportedAttributeType`
6267
// and `ConfigurationExtensions.LogInvalidEnvironmentVariable` so it should be fine even if these exporters are used together.
@@ -76,21 +81,22 @@ internal OtlpLogExporter(
7681
}
7782
else
7883
{
79-
this.exportClient = exporterOptions.GetLogExportClient();
84+
this.exportClient = exporterOptions!.GetLogExportClient();
8085
}
8186

82-
this.otlpLogRecordTransformer = new OtlpLogRecordTransformer(sdkLimitOptions, new());
87+
this.otlpLogRecordTransformer = new OtlpLogRecordTransformer(sdkLimitOptions!, experimentalOptions!);
8388
}
8489

85-
internal OtlpResource.Resource ProcessResource => this.processResource ??= this.ParentProvider.GetResource().ToOtlpResource();
90+
internal OtlpResource.Resource ProcessResource
91+
=> this.processResource ??= this.ParentProvider.GetResource().ToOtlpResource();
8692

8793
/// <inheritdoc/>
8894
public override ExportResult Export(in Batch<LogRecord> logRecordBatch)
8995
{
9096
// Prevents the exporter's gRPC and HTTP operations from being instrumented.
9197
using var scope = SuppressInstrumentationScope.Begin();
9298

93-
OtlpCollector.ExportLogsServiceRequest request = null;
99+
OtlpCollector.ExportLogsServiceRequest? request = null;
94100

95101
try
96102
{

0 commit comments

Comments
 (0)