Skip to content

Commit de98eb7

Browse files
authored
[Logs] Add named options support to OtlpLogExporter builder extensions. (#3652)
* Add named options support to otlp log provider builder extensions. * CHANGELOG update.
1 parent 79d8714 commit de98eb7

File tree

6 files changed

+71
-9
lines changed

6 files changed

+71
-9
lines changed
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
OpenTelemetry.Logs.OtlpLogExporterHelperExtensions
2-
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions> configure = null) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
2+
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
3+
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions, string name, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions> configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
4+
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions> configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
OpenTelemetry.Logs.OtlpLogExporterHelperExtensions
2-
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions> configure = null) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
2+
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
3+
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions, string name, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions> configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
4+
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions> configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
OpenTelemetry.Logs.OtlpLogExporterHelperExtensions
2-
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions> configure = null) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
2+
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
3+
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions, string name, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions> configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
4+
static OpenTelemetry.Logs.OtlpLogExporterHelperExtensions.AddOtlpExporter(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions loggerOptions, System.Action<OpenTelemetry.Exporter.OtlpExporterOptions> configure) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions

src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Logs/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
`HttpProtobuf` is configured
88
([#3640](https://github.com/open-telemetry/opentelemetry-dotnet/pull/3640))
99

10+
* Added overloads which accept a name to the `OpenTelemetryLoggerOptions`
11+
`AddOtlpExporter` extension to allow for more fine-grained options management
12+
([#3652](https://github.com/open-telemetry/opentelemetry-dotnet/pull/3652))
13+
1014
## 1.4.0-alpha.2
1115

1216
Released 2022-Aug-18

src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Logs/OtlpLogExporterHelperExtensions.cs

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,32 +27,58 @@ namespace OpenTelemetry.Logs
2727
/// </summary>
2828
public static class OtlpLogExporterHelperExtensions
2929
{
30+
/// <summary>
31+
/// Adds OTLP Exporter as a configuration to the OpenTelemetry ILoggingBuilder.
32+
/// </summary>
33+
/// <remarks><inheritdoc cref="AddOtlpExporter(OpenTelemetryLoggerOptions, string, Action{OtlpExporterOptions})" path="/remarks"/></remarks>
34+
/// <param name="loggerOptions"><see cref="OpenTelemetryLoggerOptions"/> options to use.</param>
35+
/// <returns>The instance of <see cref="OpenTelemetryLoggerOptions"/> to chain the calls.</returns>
36+
public static OpenTelemetryLoggerOptions AddOtlpExporter(this OpenTelemetryLoggerOptions loggerOptions)
37+
=> AddOtlpExporter(loggerOptions, name: null, configure: null);
38+
39+
/// <summary>
40+
/// Adds OTLP Exporter as a configuration to the OpenTelemetry ILoggingBuilder.
41+
/// </summary>
42+
/// <remarks><inheritdoc cref="AddOtlpExporter(OpenTelemetryLoggerOptions, string, Action{OtlpExporterOptions})" path="/remarks"/></remarks>
43+
/// <param name="loggerOptions"><see cref="OpenTelemetryLoggerOptions"/> options to use.</param>
44+
/// <param name="configure">Callback action for configuring <see cref="OtlpExporterOptions"/>.</param>
45+
/// <returns>The instance of <see cref="OpenTelemetryLoggerOptions"/> to chain the calls.</returns>
46+
public static OpenTelemetryLoggerOptions AddOtlpExporter(
47+
this OpenTelemetryLoggerOptions loggerOptions,
48+
Action<OtlpExporterOptions> configure)
49+
=> AddOtlpExporter(loggerOptions, name: null, configure);
50+
3051
/// <summary>
3152
/// Adds OTLP Exporter as a configuration to the OpenTelemetry ILoggingBuilder.
3253
/// </summary>
3354
/// <remarks>
34-
/// Note: <see cref="AddOtlpExporter(OpenTelemetryLoggerOptions,
35-
/// Action{OtlpExporterOptions})"/> automatically sets <see
55+
/// Note: AddOtlpExporter automatically sets <see
3656
/// cref="OpenTelemetryLoggerOptions.ParseStateValues"/> to <see
3757
/// langword="true"/>.
3858
/// </remarks>
3959
/// <param name="loggerOptions"><see cref="OpenTelemetryLoggerOptions"/> options to use.</param>
40-
/// <param name="configure">Exporter configuration options.</param>
60+
/// <param name="name">Name which is used when retrieving options.</param>
61+
/// <param name="configure">Callback action for configuring <see cref="OtlpExporterOptions"/>.</param>
4162
/// <returns>The instance of <see cref="OpenTelemetryLoggerOptions"/> to chain the calls.</returns>
42-
public static OpenTelemetryLoggerOptions AddOtlpExporter(this OpenTelemetryLoggerOptions loggerOptions, Action<OtlpExporterOptions> configure = null)
63+
public static OpenTelemetryLoggerOptions AddOtlpExporter(
64+
this OpenTelemetryLoggerOptions loggerOptions,
65+
string name,
66+
Action<OtlpExporterOptions> configure)
4367
{
4468
Guard.ThrowIfNull(loggerOptions);
4569

4670
loggerOptions.ParseStateValues = true;
4771

72+
name ??= Options.DefaultName;
73+
4874
if (configure != null)
4975
{
50-
loggerOptions.ConfigureServices(services => services.Configure(configure));
76+
loggerOptions.ConfigureServices(services => services.Configure(name, configure));
5177
}
5278

5379
return loggerOptions.ConfigureProvider((sp, provider) =>
5480
{
55-
var options = sp.GetRequiredService<IOptions<OtlpExporterOptions>>().Value;
81+
var options = sp.GetRequiredService<IOptionsSnapshot<OtlpExporterOptions>>().Get(name);
5682

5783
AddOtlpExporter(provider, options, sp);
5884
});

test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/OtlpLogExporterTests.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,32 @@ public void AddOtlpLogExporterParseStateValueCanBeTurnedOffHosting()
113113
Assert.Null(logRecord.StateValues);
114114
}
115115

116+
[Fact]
117+
public void AddOtlpLogExporterNamedOptionsSupported()
118+
{
119+
int defaultExporterOptionsConfigureOptionsInvocations = 0;
120+
int namedExporterOptionsConfigureOptionsInvocations = 0;
121+
122+
using var loggerFactory = LoggerFactory.Create(builder =>
123+
{
124+
builder.AddOpenTelemetry(options =>
125+
{
126+
options
127+
.ConfigureServices(services =>
128+
{
129+
services.Configure<OtlpExporterOptions>(o => defaultExporterOptionsConfigureOptionsInvocations++);
130+
131+
services.Configure<OtlpExporterOptions>("Exporter2", o => namedExporterOptionsConfigureOptionsInvocations++);
132+
})
133+
.AddOtlpExporter()
134+
.AddOtlpExporter("Exporter2", o => { });
135+
});
136+
});
137+
138+
Assert.Equal(1, defaultExporterOptionsConfigureOptionsInvocations);
139+
Assert.Equal(1, namedExporterOptionsConfigureOptionsInvocations);
140+
}
141+
116142
[Fact]
117143
public void OtlpLogRecordTestWhenStateValuesArePopulated()
118144
{

0 commit comments

Comments
 (0)