Skip to content

Commit

Permalink
OTLP LogExporter to enable ParseStateValues by default (#3186)
Browse files Browse the repository at this point in the history
  • Loading branch information
cijothomas authored Apr 21, 2022
1 parent 50baa25 commit b4267c7
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ private static OpenTelemetryLoggerOptions AddOtlpExporter(OpenTelemetryLoggerOpt
{
configure?.Invoke(exporterOptions);
var otlpExporter = new OtlpLogExporter(exporterOptions);

loggerOptions.ParseStateValues = true;
if (exporterOptions.ExportProcessorType == ExportProcessorType.Simple)
{
return loggerOptions.AddProcessor(new SimpleLogRecordExportProcessor(otlpExporter));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.OpenTelemetryProtocol\OpenTelemetry.Exporter.OpenTelemetryProtocol.csproj" />
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Extensions.Hosting\OpenTelemetry.Extensions.Hosting.csproj" />
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.InMemory\OpenTelemetry.Exporter.InMemory.csproj" />
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.OpenTelemetryProtocol.Logs\OpenTelemetry.Exporter.OpenTelemetryProtocol.Logs.csproj" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using OpenTelemetry.Exporter.OpenTelemetryProtocol.Implementation;
using OpenTelemetry.Internal;
Expand All @@ -30,6 +32,87 @@ namespace OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests
{
public class OtlpLogExporterTests : Http2UnencryptedSupportTests
{
[Fact]
public void AddOtlpLogExporterOptionstest()
{
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
var loggerOptions = new OpenTelemetryLoggerOptions();
Assert.False(loggerOptions.ParseStateValues);
loggerOptions.AddOtlpExporter();
Assert.True(loggerOptions.ParseStateValues);
}

[Fact]
public void AddOtlpLogExporterSetsParseStateValueToTrue()
{
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
var logRecords = new List<LogRecord>();
using var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
{
options.AddInMemoryExporter(logRecords);
options.AddOtlpExporter();
});
});

var logger = loggerFactory.CreateLogger("OtlpLogExporterTests");
logger.LogInformation("Hello from {name} {price}.", "tomato", 2.99);
Assert.Single(logRecords);
var logRecord = logRecords[0];
Assert.Null(logRecord.State);
Assert.NotNull(logRecord.StateValues);
}

[Fact]
public void AddOtlpLogExporterParseStateValueCanBeTurnedOff()
{
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
var logRecords = new List<LogRecord>();
using var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
{
options.AddInMemoryExporter(logRecords);
options.AddOtlpExporter();
options.ParseStateValues = false;
});
});

var logger = loggerFactory.CreateLogger("OtlpLogExporterTests");
logger.LogInformation("Hello from {name} {price}.", "tomato", 2.99);
Assert.Single(logRecords);
var logRecord = logRecords[0];
Assert.NotNull(logRecord.State);
Assert.Null(logRecord.StateValues);
}

[Fact]
public void AddOtlpLogExporterParseStateValueCanBeTurnedOffHosting()
{
var logRecords = new List<LogRecord>();

AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
var hostBuilder = new HostBuilder();
hostBuilder.ConfigureLogging(logging => logging.AddOpenTelemetry(options =>
{
options.AddInMemoryExporter(logRecords);
options.AddOtlpExporter();
}));

hostBuilder.ConfigureServices(services =>
services.Configure<OpenTelemetryLoggerOptions>(options => options.ParseStateValues = false));

var host = hostBuilder.Build();
var loggerFactory = host.Services.GetService<ILoggerFactory>();
var logger = loggerFactory.CreateLogger("OtlpLogExporterTests");
logger.LogInformation("Hello from {name} {price}.", "tomato", 2.99);
Assert.Single(logRecords);
var logRecord = logRecords[0];
Assert.NotNull(logRecord.State);
Assert.Null(logRecord.StateValues);
}

[Fact]
public void OtlpLogRecordTestWhenStateValuesArePopulated()
{
Expand Down

0 comments on commit b4267c7

Please sign in to comment.