diff --git a/.github/workflows/apicompatibility.yml b/.github/workflows/apicompatibility.yml
index 2404c47d523..8eb8eb4e5a7 100644
--- a/.github/workflows/apicompatibility.yml
+++ b/.github/workflows/apicompatibility.yml
@@ -2,7 +2,7 @@ name: API Compatibility
on:
pull_request:
- branches: [ main ]
+ branches: [ 'main*' ]
paths-ignore:
- '**.md'
diff --git a/.github/workflows/code-coverage.yml b/.github/workflows/code-coverage.yml
index bec49f1128c..a73663909da 100644
--- a/.github/workflows/code-coverage.yml
+++ b/.github/workflows/code-coverage.yml
@@ -2,11 +2,11 @@ name: Code Coverage
on:
push:
- branches: [ main ]
+ branches: [ 'main*' ]
paths-ignore:
- '**.md'
pull_request:
- branches: [ main ]
+ branches: [ 'main*' ]
paths-ignore:
- '**.md'
diff --git a/.github/workflows/docfx.yml b/.github/workflows/docfx.yml
index b183f85311c..df4e37e9f08 100644
--- a/.github/workflows/docfx.yml
+++ b/.github/workflows/docfx.yml
@@ -2,9 +2,9 @@ name: docfx
on:
push:
- branches: [ main ]
+ branches: [ 'main*' ]
pull_request:
- branches: [ main ]
+ branches: [ 'main*' ]
jobs:
build:
diff --git a/.github/workflows/dotnet-format-md.yml b/.github/workflows/dotnet-format-md.yml
index be810e6c827..d35d16849bb 100644
--- a/.github/workflows/dotnet-format-md.yml
+++ b/.github/workflows/dotnet-format-md.yml
@@ -9,7 +9,7 @@ name: dotnet format
on:
pull_request:
- branches: [ main ]
+ branches: [ 'main*' ]
paths-ignore:
- '**.cs'
- '.editorconfig'
diff --git a/.github/workflows/dotnet-format.yml b/.github/workflows/dotnet-format.yml
index 6c9ccdc685f..7bbcac00d2d 100644
--- a/.github/workflows/dotnet-format.yml
+++ b/.github/workflows/dotnet-format.yml
@@ -2,12 +2,12 @@ name: dotnet format
on:
push:
- branches: [ main ]
+ branches: [ 'main*' ]
paths:
- '**.cs'
- '.editorconfig'
pull_request:
- branches: [ main ]
+ branches: [ 'main*' ]
paths:
- '**.cs'
- '.editorconfig'
diff --git a/.github/workflows/integration-md.yml b/.github/workflows/integration-md.yml
index 3bcb0099255..54c3ad37e5d 100644
--- a/.github/workflows/integration-md.yml
+++ b/.github/workflows/integration-md.yml
@@ -9,7 +9,7 @@ name: Integration Tests
on:
pull_request:
- branches: [ main ]
+ branches: [ 'main*' ]
paths:
- '**.md'
diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml
index 8133308e7d3..13a1968abd7 100644
--- a/.github/workflows/integration.yml
+++ b/.github/workflows/integration.yml
@@ -2,11 +2,11 @@ name: Integration Tests
on:
push:
- branches: [ main ]
+ branches: [ 'main*' ]
paths-ignore:
- '**.md'
pull_request:
- branches: [ main ]
+ branches: [ 'main*' ]
paths-ignore:
- '**.md'
diff --git a/.github/workflows/linux-ci-md.yml b/.github/workflows/linux-ci-md.yml
index a4358d1b90c..5b7008872e4 100644
--- a/.github/workflows/linux-ci-md.yml
+++ b/.github/workflows/linux-ci-md.yml
@@ -9,7 +9,7 @@ name: Linux
on:
pull_request:
- branches: [ main ]
+ branches: [ 'main*' ]
paths:
- '**.md'
diff --git a/.github/workflows/linux-ci.yml b/.github/workflows/linux-ci.yml
index ea89eddc381..cf4a881aac2 100644
--- a/.github/workflows/linux-ci.yml
+++ b/.github/workflows/linux-ci.yml
@@ -2,11 +2,11 @@ name: Linux
on:
push:
- branches: [ main ]
+ branches: [ 'main*' ]
paths-ignore:
- '**.md'
pull_request:
- branches: [ main ]
+ branches: [ 'main*' ]
paths-ignore:
- '**.md'
diff --git a/.github/workflows/markdownlint.yml b/.github/workflows/markdownlint.yml
index 97f85f9e2b4..643c5f6f1d8 100644
--- a/.github/workflows/markdownlint.yml
+++ b/.github/workflows/markdownlint.yml
@@ -2,11 +2,11 @@ name: markdownlint
on:
push:
- branches: [ main ]
+ branches: [ 'main*' ]
paths:
- '**.md'
pull_request:
- branches: [ main ]
+ branches: [ 'main*' ]
paths:
- '**.md'
diff --git a/.github/workflows/sanitycheck.yml b/.github/workflows/sanitycheck.yml
index a52563198e4..d452206e4bf 100644
--- a/.github/workflows/sanitycheck.yml
+++ b/.github/workflows/sanitycheck.yml
@@ -2,9 +2,9 @@ name: sanitycheck
on:
push:
- branches: [ main ]
+ branches: [ 'main*' ]
pull_request:
- branches: [ main ]
+ branches: [ 'main*' ]
jobs:
misspell:
diff --git a/.github/workflows/windows-ci-md.yml b/.github/workflows/windows-ci-md.yml
index 63cf326b1da..2a241f170be 100644
--- a/.github/workflows/windows-ci-md.yml
+++ b/.github/workflows/windows-ci-md.yml
@@ -9,7 +9,7 @@ name: Windows
on:
pull_request:
- branches: [ main ]
+ branches: [ 'main*' ]
paths:
- '**.md'
diff --git a/.github/workflows/windows-ci.yml b/.github/workflows/windows-ci.yml
index 303c2b0e173..643ce43c841 100644
--- a/.github/workflows/windows-ci.yml
+++ b/.github/workflows/windows-ci.yml
@@ -2,11 +2,11 @@ name: Windows
on:
push:
- branches: [ main ]
+ branches: [ 'main*' ]
paths-ignore:
- '**.md'
pull_request:
- branches: [ main ]
+ branches: [ 'main*' ]
paths-ignore:
- '**.md'
diff --git a/OpenTelemetry.sln b/OpenTelemetry.sln
index ec895d0d87a..5d57b8fb892 100644
--- a/OpenTelemetry.sln
+++ b/OpenTelemetry.sln
@@ -234,6 +234,16 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Tests.Stress.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestApp.AspNetCore", "test\TestApp.AspNetCore\TestApp.AspNetCore.csproj", "{5FDAF679-DE5A-4C73-A49B-8ABCF2399229}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Examples.LoggingExtensions", "examples\LoggingExtensions\Examples.LoggingExtensions.csproj", "{7642798D-12D4-403A-BB92-B6BEF67C9D4F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Extensions.EventSource", "src\OpenTelemetry.Extensions.EventSource\OpenTelemetry.Extensions.EventSource.csproj", "{E55029E5-46B5-46E5-9BB3-CD5CE63E16CB}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Extensions.Serilog", "src\OpenTelemetry.Extensions.Serilog\OpenTelemetry.Extensions.Serilog.csproj", "{CB55CD2E-449C-44A2-A7CA-3C701B533F16}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Extensions.EventSource.Tests", "test\OpenTelemetry.Extensions.EventSource.Tests\OpenTelemetry.Extensions.EventSource.Tests.csproj", "{2A896854-8537-4BD6-8E1C-2B66B1160258}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Extensions.Serilog.Tests", "test\OpenTelemetry.Extensions.Serilog.Tests\OpenTelemetry.Extensions.Serilog.Tests.csproj", "{3B3C3571-6116-49D6-B28F-2A541E003577}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -476,6 +486,26 @@ Global
{5FDAF679-DE5A-4C73-A49B-8ABCF2399229}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5FDAF679-DE5A-4C73-A49B-8ABCF2399229}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5FDAF679-DE5A-4C73-A49B-8ABCF2399229}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7642798D-12D4-403A-BB92-B6BEF67C9D4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7642798D-12D4-403A-BB92-B6BEF67C9D4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7642798D-12D4-403A-BB92-B6BEF67C9D4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7642798D-12D4-403A-BB92-B6BEF67C9D4F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E55029E5-46B5-46E5-9BB3-CD5CE63E16CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E55029E5-46B5-46E5-9BB3-CD5CE63E16CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E55029E5-46B5-46E5-9BB3-CD5CE63E16CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E55029E5-46B5-46E5-9BB3-CD5CE63E16CB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CB55CD2E-449C-44A2-A7CA-3C701B533F16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CB55CD2E-449C-44A2-A7CA-3C701B533F16}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CB55CD2E-449C-44A2-A7CA-3C701B533F16}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CB55CD2E-449C-44A2-A7CA-3C701B533F16}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2A896854-8537-4BD6-8E1C-2B66B1160258}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2A896854-8537-4BD6-8E1C-2B66B1160258}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2A896854-8537-4BD6-8E1C-2B66B1160258}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2A896854-8537-4BD6-8E1C-2B66B1160258}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3B3C3571-6116-49D6-B28F-2A541E003577}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3B3C3571-6116-49D6-B28F-2A541E003577}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3B3C3571-6116-49D6-B28F-2A541E003577}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3B3C3571-6116-49D6-B28F-2A541E003577}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -512,6 +542,7 @@ Global
{6C7A1595-36D6-4229-BBB5-5A6B5791791D} = {3862190B-E2C5-418E-AFDC-DB281FB5C705}
{9A07D215-90AC-4BAF-BCDB-73D74FD3A5C5} = {3862190B-E2C5-418E-AFDC-DB281FB5C705}
{5FDAF679-DE5A-4C73-A49B-8ABCF2399229} = {77C7929A-2EED-4AA6-8705-B5C443C8AA0F}
+ {7642798D-12D4-403A-BB92-B6BEF67C9D4F} = {E359BB2B-9AEC-497D-B321-7DF2450C3B8E}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {55639B5C-0770-4A22-AB56-859604650521}
diff --git a/build/Common.props b/build/Common.props
index 8a5640bef03..deed26cd9ca 100644
--- a/build/Common.props
+++ b/build/Common.props
@@ -38,7 +38,7 @@
[1.0.0,2.0)
[1.0.0,2.0)
[0.12.1,0.13)
- 1.3.0
+ 1.3.1
[2.8.0,3.0)
[1.2.0-beta.435,2.0)
1.4.0
diff --git a/docs/logs/correlation/Program.cs b/docs/logs/correlation/Program.cs
index 722e66347e6..a6c22686fd6 100644
--- a/docs/logs/correlation/Program.cs
+++ b/docs/logs/correlation/Program.cs
@@ -32,10 +32,7 @@ public static void Main()
// Setup Logging
using var loggerFactory = LoggerFactory.Create(builder =>
{
- builder.AddOpenTelemetry(options =>
- {
- options.AddConsoleExporter();
- });
+ builder.AddOpenTelemetry().AddConsoleExporter();
});
var logger = loggerFactory.CreateLogger();
diff --git a/docs/logs/customizing-the-sdk/Program.cs b/docs/logs/customizing-the-sdk/Program.cs
index b6b3afd07d8..900e28341ce 100644
--- a/docs/logs/customizing-the-sdk/Program.cs
+++ b/docs/logs/customizing-the-sdk/Program.cs
@@ -27,12 +27,10 @@ public static void Main()
{
using var loggerFactory = LoggerFactory.Create(builder =>
{
- builder.AddOpenTelemetry(options =>
- {
- options.IncludeScopes = true;
- options.ConfigureResource(r => r.AddService(serviceName: "MyService", serviceVersion: "1.0.0"));
- options.AddConsoleExporter();
- });
+ builder
+ .AddOpenTelemetry(options => options.IncludeScopes = true)
+ .ConfigureResource(r => r.AddService(serviceName: "MyService", serviceVersion: "1.0.0"))
+ .AddConsoleExporter();
});
var logger = loggerFactory.CreateLogger();
diff --git a/docs/logs/extending-the-sdk/LoggerExtensions.cs b/docs/logs/extending-the-sdk/LoggerExtensions.cs
index 644d711c1a0..f32063db49b 100644
--- a/docs/logs/extending-the-sdk/LoggerExtensions.cs
+++ b/docs/logs/extending-the-sdk/LoggerExtensions.cs
@@ -20,13 +20,13 @@
internal static class LoggerExtensions
{
- public static OpenTelemetryLoggerOptions AddMyExporter(this OpenTelemetryLoggerOptions options)
+ public static LoggerProviderBuilder AddMyExporter(this LoggerProviderBuilder builder)
{
- if (options == null)
+ if (builder == null)
{
- throw new ArgumentNullException(nameof(options));
+ throw new ArgumentNullException(nameof(builder));
}
- return options.AddProcessor(new BatchLogRecordExportProcessor(new MyExporter()));
+ return builder.AddProcessor(new BatchLogRecordExportProcessor(new MyExporter()));
}
}
diff --git a/docs/logs/extending-the-sdk/MyClassWithRedactionEnumerator.cs b/docs/logs/extending-the-sdk/MyRedactedAttributeList.cs
similarity index 59%
rename from docs/logs/extending-the-sdk/MyClassWithRedactionEnumerator.cs
rename to docs/logs/extending-the-sdk/MyRedactedAttributeList.cs
index 4e5f3107460..fa9e96c6379 100644
--- a/docs/logs/extending-the-sdk/MyClassWithRedactionEnumerator.cs
+++ b/docs/logs/extending-the-sdk/MyRedactedAttributeList.cs
@@ -1,4 +1,4 @@
-//
+//
// Copyright The OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,32 +17,38 @@
using System.Collections;
using System.Collections.Generic;
-internal class MyClassWithRedactionEnumerator : IReadOnlyList>
+internal class MyRedactedAttributeList : IReadOnlyList>
{
- private readonly IReadOnlyList> state;
+ private readonly IReadOnlyList> attributes;
- public MyClassWithRedactionEnumerator(IReadOnlyList> state)
+ public MyRedactedAttributeList(IReadOnlyList> attributes)
{
- this.state = state;
+ this.attributes = attributes;
}
- public int Count => this.state.Count;
+ public int Count => this.attributes.Count;
- public KeyValuePair this[int index] => this.state[index];
-
- public IEnumerator> GetEnumerator()
+ public KeyValuePair this[int index]
{
- foreach (var entry in this.state)
+ get
{
- var entryVal = entry.Value;
+ var item = this.attributes[index];
+
+ var entryVal = item.Value;
if (entryVal != null && entryVal.ToString() != null && entryVal.ToString().Contains(""))
{
- yield return new KeyValuePair(entry.Key, "newRedactedValueHere");
- }
- else
- {
- yield return entry;
+ return new KeyValuePair(item.Key, "newRedactedValueHere");
}
+
+ return item;
+ }
+ }
+
+ public IEnumerator> GetEnumerator()
+ {
+ for (var i = 0; i < this.Count; i++)
+ {
+ yield return this[i];
}
}
diff --git a/docs/logs/extending-the-sdk/MyRedactionProcessor.cs b/docs/logs/extending-the-sdk/MyRedactionProcessor.cs
index 2ad8371ae69..2c8f5bf00cc 100644
--- a/docs/logs/extending-the-sdk/MyRedactionProcessor.cs
+++ b/docs/logs/extending-the-sdk/MyRedactionProcessor.cs
@@ -14,7 +14,6 @@
// limitations under the License.
//
-using System.Collections.Generic;
using OpenTelemetry;
using OpenTelemetry.Logs;
@@ -22,9 +21,9 @@ internal class MyRedactionProcessor : BaseProcessor
{
public override void OnEnd(LogRecord logRecord)
{
- if (logRecord.State is IReadOnlyList> listOfKvp)
+ if (logRecord.Attributes != null)
{
- logRecord.State = new MyClassWithRedactionEnumerator(listOfKvp);
+ logRecord.Attributes = new MyRedactedAttributeList(logRecord.Attributes);
}
}
}
diff --git a/docs/logs/extending-the-sdk/Program.cs b/docs/logs/extending-the-sdk/Program.cs
index 2ea9dad4953..d5ab961fe1c 100644
--- a/docs/logs/extending-the-sdk/Program.cs
+++ b/docs/logs/extending-the-sdk/Program.cs
@@ -17,6 +17,7 @@
using System.Collections.Generic;
using Microsoft.Extensions.Logging;
using OpenTelemetry;
+using OpenTelemetry.Logs;
namespace ExtendingTheSdk;
@@ -24,16 +25,13 @@ public class Program
{
public static void Main()
{
- using var loggerFactory = LoggerFactory.Create(builder =>
- builder.AddOpenTelemetry(options =>
- {
- options.IncludeScopes = true;
- options.AddProcessor(new MyRedactionProcessor())
- .AddProcessor(new MyProcessor("ProcessorA"))
- .AddProcessor(new MyProcessor("ProcessorB"))
- .AddProcessor(new SimpleLogRecordExportProcessor(new MyExporter("ExporterX")))
- .AddMyExporter();
- }));
+ using var loggerFactory = LoggerFactory.Create(builder => builder
+ .AddOpenTelemetry(options => options.IncludeScopes = true)
+ .AddProcessor(new MyRedactionProcessor())
+ .AddProcessor(new MyProcessor("ProcessorA"))
+ .AddProcessor(new MyProcessor("ProcessorB"))
+ .AddProcessor(new SimpleLogRecordExportProcessor(new MyExporter("ExporterX")))
+ .AddMyExporter());
var logger = loggerFactory.CreateLogger();
diff --git a/docs/logs/getting-started/Program.cs b/docs/logs/getting-started/Program.cs
index d13ba546b4b..7f76f13899e 100644
--- a/docs/logs/getting-started/Program.cs
+++ b/docs/logs/getting-started/Program.cs
@@ -25,10 +25,7 @@ public static void Main()
{
using var loggerFactory = LoggerFactory.Create(builder =>
{
- builder.AddOpenTelemetry(options =>
- {
- options.AddConsoleExporter();
- });
+ builder.AddOpenTelemetry().AddConsoleExporter();
});
var logger = loggerFactory.CreateLogger();
diff --git a/docs/logs/source-generation/Program.cs b/docs/logs/source-generation/Program.cs
index 42c0e41ec3a..63f82951029 100644
--- a/docs/logs/source-generation/Program.cs
+++ b/docs/logs/source-generation/Program.cs
@@ -23,16 +23,13 @@ public class Program
{
public static void Main()
{
- using var loggerFactory = LoggerFactory.Create(builder =>
- {
- builder.AddOpenTelemetry(options =>
+ using var loggerFactory = LoggerFactory.Create(builder => builder
+ .AddOpenTelemetry(options =>
{
options.IncludeScopes = true;
- options.ParseStateValues = true;
options.IncludeFormattedMessage = true;
- options.AddConsoleExporter();
- });
- });
+ })
+ .AddConsoleExporter());
var logger = loggerFactory.CreateLogger();
diff --git a/examples/AspNetCore/Program.cs b/examples/AspNetCore/Program.cs
index e070011daa7..870626f5c31 100644
--- a/examples/AspNetCore/Program.cs
+++ b/examples/AspNetCore/Program.cs
@@ -87,25 +87,25 @@
// Logging
builder.Logging.ClearProviders();
-builder.Logging.AddOpenTelemetry(options =>
-{
- options.ConfigureResource(configureResource);
+// Note: See appsettings.json Logging:OpenTelemetry section for OpenTelemetryLoggerOptions bindings.
+var loggerBuilder = builder.Logging.AddOpenTelemetry();
- // Switch between Console/OTLP by setting UseLogExporter in appsettings.json.
- var logExporter = builder.Configuration.GetValue("UseLogExporter").ToLowerInvariant();
- switch (logExporter)
- {
- case "otlp":
- options.AddOtlpExporter(otlpOptions =>
- {
- otlpOptions.Endpoint = new Uri(builder.Configuration.GetValue("Otlp:Endpoint"));
- });
- break;
- default:
- options.AddConsoleExporter();
- break;
- }
-});
+loggerBuilder.ConfigureResource(configureResource);
+
+// Switch between Console/OTLP by setting UseLogExporter in appsettings.json.
+var logExporter = builder.Configuration.GetValue("UseLogExporter").ToLowerInvariant();
+switch (logExporter)
+{
+ case "otlp":
+ loggerBuilder.AddOtlpExporter(otlpOptions =>
+ {
+ otlpOptions.Endpoint = new Uri(builder.Configuration.GetValue("Otlp:Endpoint"));
+ });
+ break;
+ default:
+ loggerBuilder.AddConsoleExporter();
+ break;
+}
builder.Services.Configure(opt =>
{
diff --git a/examples/AspNetCore/appsettings.json b/examples/AspNetCore/appsettings.json
index e2826c577b6..b85fb8dd5cb 100644
--- a/examples/AspNetCore/appsettings.json
+++ b/examples/AspNetCore/appsettings.json
@@ -4,6 +4,13 @@
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
+ },
+ "OpenTelemetry": {
+ "IncludeFormattedMessage": false,
+ "IncludeScopes": false,
+ "IncludeState": true,
+ "ParseStateValues": false,
+ "IncludeTraceState": false
}
},
"AllowedHosts": "*",
diff --git a/examples/LoggingExtensions/ExampleEventSource.cs b/examples/LoggingExtensions/ExampleEventSource.cs
new file mode 100644
index 00000000000..7fa0b8cea95
--- /dev/null
+++ b/examples/LoggingExtensions/ExampleEventSource.cs
@@ -0,0 +1,33 @@
+//
+// 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.Diagnostics.Tracing;
+
+namespace Examples.LoggingExtensions;
+
+[EventSource(Name = EventSourceName)]
+internal sealed class ExampleEventSource : EventSource
+{
+ public const string EventSourceName = "OpenTelemetry-ExampleEventSource";
+
+ public static ExampleEventSource Log { get; } = new();
+
+ [Event(1, Message = "Example event written with '{0}' reason", Level = EventLevel.Informational)]
+ public void ExampleEvent(string reason)
+ {
+ this.WriteEvent(1, reason);
+ }
+}
diff --git a/examples/LoggingExtensions/Examples.LoggingExtensions.csproj b/examples/LoggingExtensions/Examples.LoggingExtensions.csproj
new file mode 100644
index 00000000000..892a652ac78
--- /dev/null
+++ b/examples/LoggingExtensions/Examples.LoggingExtensions.csproj
@@ -0,0 +1,16 @@
+
+
+
+ Exe
+ net6.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
diff --git a/examples/LoggingExtensions/Program.cs b/examples/LoggingExtensions/Program.cs
new file mode 100644
index 00000000000..7f3356836d6
--- /dev/null
+++ b/examples/LoggingExtensions/Program.cs
@@ -0,0 +1,54 @@
+//
+// 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.Diagnostics.Tracing;
+using Examples.LoggingExtensions;
+using OpenTelemetry;
+using OpenTelemetry.Logs;
+using OpenTelemetry.Resources;
+using Serilog;
+
+var loggerProvider = Sdk.CreateLoggerProviderBuilder()
+ .ConfigureResource(builder => builder.AddService("Examples.LoggingExtensions"))
+ .AddConsoleExporter()
+ .Build();
+
+// Creates an OpenTelemetryEventSourceLogEmitter for routing ExampleEventSource
+// events into logs
+using var openTelemetryEventSourceLogEmitter = new OpenTelemetryEventSourceLogEmitter(
+ loggerProvider, // <- Events will be written to loggerProvider
+ (name) => name == ExampleEventSource.EventSourceName ? EventLevel.Informational : null,
+ disposeProvider: false); // <- Do not dispose the provider with OpenTelemetryEventSourceLogEmitter since in this case it is shared with Serilog
+
+// Configure Serilog global logger
+Log.Logger = new LoggerConfiguration()
+ .WriteTo.OpenTelemetry(
+ loggerProvider, // <- Register OpenTelemetry Serilog sink writing to loggerProvider
+ disposeProvider: false) // <- Do not dispose the provider with Serilog since in this case it is shared with OpenTelemetryEventSourceLogEmitter
+ .CreateLogger();
+
+ExampleEventSource.Log.ExampleEvent("Startup complete");
+
+// Note: Serilog ForContext API is used to set "CategoryName" on log messages
+ILogger programLogger = Log.Logger.ForContext();
+
+programLogger.Information("Application started {Greeting} {Location}", "Hello", "World");
+
+// Note: For Serilog this call flushes all logs
+Log.CloseAndFlush();
+
+// Manually dispose loggerProvider since it is being shared
+loggerProvider.Dispose();
diff --git a/examples/LoggingExtensions/README.md b/examples/LoggingExtensions/README.md
new file mode 100644
index 00000000000..adbb1df5b7c
--- /dev/null
+++ b/examples/LoggingExtensions/README.md
@@ -0,0 +1,10 @@
+# OpenTelemetry Logging Extensions Example
+
+This project contains examples of the `LogEmitter` API being used to extend
+existing logging platforms to write into OpenTelemetry logs.
+
+* Serilog: Using OpenTelemetry.Extensions.Serilog
+
+## References
+
+* [OpenTelemetry Project](https://opentelemetry.io/)
diff --git a/src/OpenTelemetry.Api/.publicApi/net462/PublicAPI.Shipped.txt b/src/OpenTelemetry.Api/.publicApi/net462/PublicAPI.Shipped.txt
index f375357a7c7..f4de20917f9 100644
--- a/src/OpenTelemetry.Api/.publicApi/net462/PublicAPI.Shipped.txt
+++ b/src/OpenTelemetry.Api/.publicApi/net462/PublicAPI.Shipped.txt
@@ -1,44 +1,44 @@
-abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
-abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Fields.get -> System.Collections.Generic.ISet
-abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
+~abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
+~abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Fields.get -> System.Collections.Generic.ISet
+~abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
abstract OpenTelemetry.Context.RuntimeContextSlot.Get() -> T
abstract OpenTelemetry.Context.RuntimeContextSlot.Set(T value) -> void
-abstract OpenTelemetry.Metrics.MeterProviderBuilder.AddInstrumentation(System.Func instrumentationFactory) -> OpenTelemetry.Metrics.MeterProviderBuilder
-abstract OpenTelemetry.Metrics.MeterProviderBuilder.AddMeter(params string[] names) -> OpenTelemetry.Metrics.MeterProviderBuilder
-abstract OpenTelemetry.Trace.TracerProviderBuilder.AddInstrumentation(System.Func instrumentationFactory) -> OpenTelemetry.Trace.TracerProviderBuilder
-abstract OpenTelemetry.Trace.TracerProviderBuilder.AddLegacySource(string operationName) -> OpenTelemetry.Trace.TracerProviderBuilder
-abstract OpenTelemetry.Trace.TracerProviderBuilder.AddSource(params string[] names) -> OpenTelemetry.Trace.TracerProviderBuilder
+~abstract OpenTelemetry.Metrics.MeterProviderBuilder.AddInstrumentation(System.Func instrumentationFactory) -> OpenTelemetry.Metrics.MeterProviderBuilder
+~abstract OpenTelemetry.Metrics.MeterProviderBuilder.AddMeter(params string[] names) -> OpenTelemetry.Metrics.MeterProviderBuilder
+~abstract OpenTelemetry.Trace.TracerProviderBuilder.AddInstrumentation(System.Func instrumentationFactory) -> OpenTelemetry.Trace.TracerProviderBuilder
+~abstract OpenTelemetry.Trace.TracerProviderBuilder.AddLegacySource(string operationName) -> OpenTelemetry.Trace.TracerProviderBuilder
+~abstract OpenTelemetry.Trace.TracerProviderBuilder.AddSource(params string[] names) -> OpenTelemetry.Trace.TracerProviderBuilder
OpenTelemetry.ActivityContextExtensions
OpenTelemetry.Baggage
OpenTelemetry.Baggage.Baggage() -> void
OpenTelemetry.Baggage.ClearBaggage() -> OpenTelemetry.Baggage
OpenTelemetry.Baggage.Count.get -> int
OpenTelemetry.Baggage.Equals(OpenTelemetry.Baggage other) -> bool
-OpenTelemetry.Baggage.GetBaggage() -> System.Collections.Generic.IReadOnlyDictionary
-OpenTelemetry.Baggage.GetBaggage(string name) -> string
-OpenTelemetry.Baggage.GetEnumerator() -> System.Collections.Generic.Dictionary.Enumerator
-OpenTelemetry.Baggage.RemoveBaggage(string name) -> OpenTelemetry.Baggage
-OpenTelemetry.Baggage.SetBaggage(params System.Collections.Generic.KeyValuePair[] baggageItems) -> OpenTelemetry.Baggage
-OpenTelemetry.Baggage.SetBaggage(string name, string value) -> OpenTelemetry.Baggage
-OpenTelemetry.Baggage.SetBaggage(System.Collections.Generic.IEnumerable> baggageItems) -> OpenTelemetry.Baggage
+~OpenTelemetry.Baggage.GetBaggage() -> System.Collections.Generic.IReadOnlyDictionary
+~OpenTelemetry.Baggage.GetBaggage(string name) -> string
+~OpenTelemetry.Baggage.GetEnumerator() -> System.Collections.Generic.Dictionary.Enumerator
+~OpenTelemetry.Baggage.RemoveBaggage(string name) -> OpenTelemetry.Baggage
+~OpenTelemetry.Baggage.SetBaggage(params System.Collections.Generic.KeyValuePair[] baggageItems) -> OpenTelemetry.Baggage
+~OpenTelemetry.Baggage.SetBaggage(string name, string value) -> OpenTelemetry.Baggage
+~OpenTelemetry.Baggage.SetBaggage(System.Collections.Generic.IEnumerable> baggageItems) -> OpenTelemetry.Baggage
OpenTelemetry.BaseProvider
OpenTelemetry.BaseProvider.~BaseProvider() -> void
OpenTelemetry.BaseProvider.BaseProvider() -> void
OpenTelemetry.BaseProvider.Dispose() -> void
OpenTelemetry.Context.AsyncLocalRuntimeContextSlot
-OpenTelemetry.Context.AsyncLocalRuntimeContextSlot.AsyncLocalRuntimeContextSlot(string name) -> void
-OpenTelemetry.Context.AsyncLocalRuntimeContextSlot.Value.get -> object
-OpenTelemetry.Context.AsyncLocalRuntimeContextSlot.Value.set -> void
+~OpenTelemetry.Context.AsyncLocalRuntimeContextSlot.AsyncLocalRuntimeContextSlot(string name) -> void
+~OpenTelemetry.Context.AsyncLocalRuntimeContextSlot.Value.get -> object
+~OpenTelemetry.Context.AsyncLocalRuntimeContextSlot.Value.set -> void
OpenTelemetry.Context.IRuntimeContextSlotValueAccessor
-OpenTelemetry.Context.IRuntimeContextSlotValueAccessor.Value.get -> object
-OpenTelemetry.Context.IRuntimeContextSlotValueAccessor.Value.set -> void
+~OpenTelemetry.Context.IRuntimeContextSlotValueAccessor.Value.get -> object
+~OpenTelemetry.Context.IRuntimeContextSlotValueAccessor.Value.set -> void
OpenTelemetry.Context.Propagation.B3Propagator
OpenTelemetry.Context.Propagation.B3Propagator.B3Propagator() -> void
OpenTelemetry.Context.Propagation.B3Propagator.B3Propagator(bool singleHeader) -> void
OpenTelemetry.Context.Propagation.BaggagePropagator
OpenTelemetry.Context.Propagation.BaggagePropagator.BaggagePropagator() -> void
OpenTelemetry.Context.Propagation.CompositeTextMapPropagator
-OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.CompositeTextMapPropagator(System.Collections.Generic.IEnumerable propagators) -> void
+~OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.CompositeTextMapPropagator(System.Collections.Generic.IEnumerable propagators) -> void
OpenTelemetry.Context.Propagation.PropagationContext
OpenTelemetry.Context.Propagation.PropagationContext.ActivityContext.get -> System.Diagnostics.ActivityContext
OpenTelemetry.Context.Propagation.PropagationContext.Baggage.get -> OpenTelemetry.Baggage
@@ -51,56 +51,56 @@ OpenTelemetry.Context.Propagation.TextMapPropagator.TextMapPropagator() -> void
OpenTelemetry.Context.Propagation.TraceContextPropagator
OpenTelemetry.Context.Propagation.TraceContextPropagator.TraceContextPropagator() -> void
OpenTelemetry.Context.RemotingRuntimeContextSlot
-OpenTelemetry.Context.RemotingRuntimeContextSlot.RemotingRuntimeContextSlot(string name) -> void
-OpenTelemetry.Context.RemotingRuntimeContextSlot.Value.get -> object
-OpenTelemetry.Context.RemotingRuntimeContextSlot.Value.set -> void
+~OpenTelemetry.Context.RemotingRuntimeContextSlot.RemotingRuntimeContextSlot(string name) -> void
+~OpenTelemetry.Context.RemotingRuntimeContextSlot.Value.get -> object
+~OpenTelemetry.Context.RemotingRuntimeContextSlot.Value.set -> void
OpenTelemetry.Context.RuntimeContext
OpenTelemetry.Context.RuntimeContextSlot
OpenTelemetry.Context.RuntimeContextSlot.Dispose() -> void
-OpenTelemetry.Context.RuntimeContextSlot.Name.get -> string
-OpenTelemetry.Context.RuntimeContextSlot.RuntimeContextSlot(string name) -> void
+~OpenTelemetry.Context.RuntimeContextSlot.Name.get -> string
+~OpenTelemetry.Context.RuntimeContextSlot.RuntimeContextSlot(string name) -> void
OpenTelemetry.Context.ThreadLocalRuntimeContextSlot
-OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.ThreadLocalRuntimeContextSlot(string name) -> void
-OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.Value.get -> object
-OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.Value.set -> void
+~OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.ThreadLocalRuntimeContextSlot(string name) -> void
+~OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.Value.get -> object
+~OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.Value.set -> void
OpenTelemetry.Metrics.IDeferredMeterProviderBuilder
-OpenTelemetry.Metrics.IDeferredMeterProviderBuilder.Configure(System.Action configure) -> OpenTelemetry.Metrics.MeterProviderBuilder
+~OpenTelemetry.Metrics.IDeferredMeterProviderBuilder.Configure(System.Action configure) -> OpenTelemetry.Metrics.MeterProviderBuilder
OpenTelemetry.Metrics.MeterProvider
OpenTelemetry.Metrics.MeterProvider.MeterProvider() -> void
OpenTelemetry.Metrics.MeterProviderBuilder
OpenTelemetry.Metrics.MeterProviderBuilder.MeterProviderBuilder() -> void
OpenTelemetry.Trace.ActivityExtensions
OpenTelemetry.Trace.IDeferredTracerProviderBuilder
-OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Configure(System.Action configure) -> OpenTelemetry.Trace.TracerProviderBuilder
+~OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Configure(System.Action configure) -> OpenTelemetry.Trace.TracerProviderBuilder
OpenTelemetry.Trace.Link
-OpenTelemetry.Trace.Link.Attributes.get -> System.Collections.Generic.IEnumerable>
+~OpenTelemetry.Trace.Link.Attributes.get -> System.Collections.Generic.IEnumerable>
OpenTelemetry.Trace.Link.Context.get -> OpenTelemetry.Trace.SpanContext
OpenTelemetry.Trace.Link.Equals(OpenTelemetry.Trace.Link other) -> bool
OpenTelemetry.Trace.Link.Link() -> void
OpenTelemetry.Trace.Link.Link(in OpenTelemetry.Trace.SpanContext spanContext) -> void
-OpenTelemetry.Trace.Link.Link(in OpenTelemetry.Trace.SpanContext spanContext, OpenTelemetry.Trace.SpanAttributes attributes) -> void
+~OpenTelemetry.Trace.Link.Link(in OpenTelemetry.Trace.SpanContext spanContext, OpenTelemetry.Trace.SpanAttributes attributes) -> void
OpenTelemetry.Trace.SpanAttributes
-OpenTelemetry.Trace.SpanAttributes.Add(string key, bool value) -> void
-OpenTelemetry.Trace.SpanAttributes.Add(string key, bool[] values) -> void
-OpenTelemetry.Trace.SpanAttributes.Add(string key, double value) -> void
-OpenTelemetry.Trace.SpanAttributes.Add(string key, double[] values) -> void
-OpenTelemetry.Trace.SpanAttributes.Add(string key, long value) -> void
-OpenTelemetry.Trace.SpanAttributes.Add(string key, long[] values) -> void
-OpenTelemetry.Trace.SpanAttributes.Add(string key, string value) -> void
-OpenTelemetry.Trace.SpanAttributes.Add(string key, string[] values) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, bool value) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, bool[] values) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, double value) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, double[] values) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, long value) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, long[] values) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, string value) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, string[] values) -> void
OpenTelemetry.Trace.SpanAttributes.SpanAttributes() -> void
-OpenTelemetry.Trace.SpanAttributes.SpanAttributes(System.Collections.Generic.IEnumerable> attributes) -> void
+~OpenTelemetry.Trace.SpanAttributes.SpanAttributes(System.Collections.Generic.IEnumerable> attributes) -> void
OpenTelemetry.Trace.SpanContext
OpenTelemetry.Trace.SpanContext.Equals(OpenTelemetry.Trace.SpanContext other) -> bool
OpenTelemetry.Trace.SpanContext.IsRemote.get -> bool
OpenTelemetry.Trace.SpanContext.IsValid.get -> bool
OpenTelemetry.Trace.SpanContext.SpanContext() -> void
OpenTelemetry.Trace.SpanContext.SpanContext(in System.Diagnostics.ActivityContext activityContext) -> void
-OpenTelemetry.Trace.SpanContext.SpanContext(in System.Diagnostics.ActivityTraceId traceId, in System.Diagnostics.ActivitySpanId spanId, System.Diagnostics.ActivityTraceFlags traceFlags, bool isRemote = false, System.Collections.Generic.IEnumerable> traceState = null) -> void
+~OpenTelemetry.Trace.SpanContext.SpanContext(in System.Diagnostics.ActivityTraceId traceId, in System.Diagnostics.ActivitySpanId spanId, System.Diagnostics.ActivityTraceFlags traceFlags, bool isRemote = false, System.Collections.Generic.IEnumerable> traceState = null) -> void
OpenTelemetry.Trace.SpanContext.SpanId.get -> System.Diagnostics.ActivitySpanId
OpenTelemetry.Trace.SpanContext.TraceFlags.get -> System.Diagnostics.ActivityTraceFlags
OpenTelemetry.Trace.SpanContext.TraceId.get -> System.Diagnostics.ActivityTraceId
-OpenTelemetry.Trace.SpanContext.TraceState.get -> System.Collections.Generic.IEnumerable>
+~OpenTelemetry.Trace.SpanContext.TraceState.get -> System.Collections.Generic.IEnumerable>
OpenTelemetry.Trace.SpanKind
OpenTelemetry.Trace.SpanKind.Client = 3 -> OpenTelemetry.Trace.SpanKind
OpenTelemetry.Trace.SpanKind.Consumer = 5 -> OpenTelemetry.Trace.SpanKind
@@ -108,106 +108,106 @@ OpenTelemetry.Trace.SpanKind.Internal = 1 -> OpenTelemetry.Trace.SpanKind
OpenTelemetry.Trace.SpanKind.Producer = 4 -> OpenTelemetry.Trace.SpanKind
OpenTelemetry.Trace.SpanKind.Server = 2 -> OpenTelemetry.Trace.SpanKind
OpenTelemetry.Trace.Status
-OpenTelemetry.Trace.Status.Description.get -> string
+~OpenTelemetry.Trace.Status.Description.get -> string
OpenTelemetry.Trace.Status.Equals(OpenTelemetry.Trace.Status other) -> bool
OpenTelemetry.Trace.Status.Status() -> void
OpenTelemetry.Trace.Status.StatusCode.get -> OpenTelemetry.Trace.StatusCode
-OpenTelemetry.Trace.Status.WithDescription(string description) -> OpenTelemetry.Trace.Status
+~OpenTelemetry.Trace.Status.WithDescription(string description) -> OpenTelemetry.Trace.Status
OpenTelemetry.Trace.StatusCode
OpenTelemetry.Trace.StatusCode.Error = 2 -> OpenTelemetry.Trace.StatusCode
OpenTelemetry.Trace.StatusCode.Ok = 1 -> OpenTelemetry.Trace.StatusCode
OpenTelemetry.Trace.StatusCode.Unset = 0 -> OpenTelemetry.Trace.StatusCode
OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.TelemetrySpan.AddEvent(string name) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.TelemetrySpan.AddEvent(string name, OpenTelemetry.Trace.SpanAttributes attributes) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.TelemetrySpan.AddEvent(string name, System.DateTimeOffset timestamp) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.TelemetrySpan.AddEvent(string name, System.DateTimeOffset timestamp, OpenTelemetry.Trace.SpanAttributes attributes) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.AddEvent(string name) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.AddEvent(string name, OpenTelemetry.Trace.SpanAttributes attributes) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.AddEvent(string name, System.DateTimeOffset timestamp) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.AddEvent(string name, System.DateTimeOffset timestamp, OpenTelemetry.Trace.SpanAttributes attributes) -> OpenTelemetry.Trace.TelemetrySpan
OpenTelemetry.Trace.TelemetrySpan.Context.get -> OpenTelemetry.Trace.SpanContext
OpenTelemetry.Trace.TelemetrySpan.Dispose() -> void
OpenTelemetry.Trace.TelemetrySpan.End() -> void
OpenTelemetry.Trace.TelemetrySpan.End(System.DateTimeOffset endTimestamp) -> void
OpenTelemetry.Trace.TelemetrySpan.IsRecording.get -> bool
OpenTelemetry.Trace.TelemetrySpan.ParentSpanId.get -> System.Diagnostics.ActivitySpanId
-OpenTelemetry.Trace.TelemetrySpan.RecordException(string type, string message, string stacktrace) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.TelemetrySpan.RecordException(System.Exception ex) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, bool value) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, bool[] values) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, double value) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, double[] values) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, int value) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, int[] values) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, string value) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, string[] values) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.RecordException(string type, string message, string stacktrace) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.RecordException(System.Exception ex) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, bool value) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, bool[] values) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, double value) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, double[] values) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, int value) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, int[] values) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, string value) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, string[] values) -> OpenTelemetry.Trace.TelemetrySpan
OpenTelemetry.Trace.TelemetrySpan.SetStatus(OpenTelemetry.Trace.Status value) -> void
-OpenTelemetry.Trace.TelemetrySpan.UpdateName(string name) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.UpdateName(string name) -> OpenTelemetry.Trace.TelemetrySpan
OpenTelemetry.Trace.Tracer
-OpenTelemetry.Trace.Tracer.StartActiveSpan(string name, OpenTelemetry.Trace.SpanKind kind = OpenTelemetry.Trace.SpanKind.Internal, in OpenTelemetry.Trace.SpanContext parentContext = default(OpenTelemetry.Trace.SpanContext), OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.Tracer.StartActiveSpan(string name, OpenTelemetry.Trace.SpanKind kind, in OpenTelemetry.Trace.TelemetrySpan parentSpan, OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.Tracer.StartRootSpan(string name, OpenTelemetry.Trace.SpanKind kind = OpenTelemetry.Trace.SpanKind.Internal, OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.Tracer.StartSpan(string name, OpenTelemetry.Trace.SpanKind kind = OpenTelemetry.Trace.SpanKind.Internal, in OpenTelemetry.Trace.SpanContext parentContext = default(OpenTelemetry.Trace.SpanContext), OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
-OpenTelemetry.Trace.Tracer.StartSpan(string name, OpenTelemetry.Trace.SpanKind kind, in OpenTelemetry.Trace.TelemetrySpan parentSpan, OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.Tracer.StartActiveSpan(string name, OpenTelemetry.Trace.SpanKind kind = OpenTelemetry.Trace.SpanKind.Internal, in OpenTelemetry.Trace.SpanContext parentContext = default(OpenTelemetry.Trace.SpanContext), OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.Tracer.StartActiveSpan(string name, OpenTelemetry.Trace.SpanKind kind, in OpenTelemetry.Trace.TelemetrySpan parentSpan, OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.Tracer.StartRootSpan(string name, OpenTelemetry.Trace.SpanKind kind = OpenTelemetry.Trace.SpanKind.Internal, OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.Tracer.StartSpan(string name, OpenTelemetry.Trace.SpanKind kind = OpenTelemetry.Trace.SpanKind.Internal, in OpenTelemetry.Trace.SpanContext parentContext = default(OpenTelemetry.Trace.SpanContext), OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.Tracer.StartSpan(string name, OpenTelemetry.Trace.SpanKind kind, in OpenTelemetry.Trace.TelemetrySpan parentSpan, OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
OpenTelemetry.Trace.TracerProvider
-OpenTelemetry.Trace.TracerProvider.GetTracer(string name, string version = null) -> OpenTelemetry.Trace.Tracer
+~OpenTelemetry.Trace.TracerProvider.GetTracer(string name, string version = null) -> OpenTelemetry.Trace.Tracer
OpenTelemetry.Trace.TracerProvider.TracerProvider() -> void
OpenTelemetry.Trace.TracerProviderBuilder
OpenTelemetry.Trace.TracerProviderBuilder.TracerProviderBuilder() -> void
-override OpenTelemetry.Baggage.Equals(object obj) -> bool
+~override OpenTelemetry.Baggage.Equals(object obj) -> bool
override OpenTelemetry.Baggage.GetHashCode() -> int
override OpenTelemetry.Context.AsyncLocalRuntimeContextSlot.Get() -> T
override OpenTelemetry.Context.AsyncLocalRuntimeContextSlot.Set(T value) -> void
-override OpenTelemetry.Context.Propagation.B3Propagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
-override OpenTelemetry.Context.Propagation.B3Propagator.Fields.get -> System.Collections.Generic.ISet
-override OpenTelemetry.Context.Propagation.B3Propagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
-override OpenTelemetry.Context.Propagation.BaggagePropagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
-override OpenTelemetry.Context.Propagation.BaggagePropagator.Fields.get -> System.Collections.Generic.ISet
-override OpenTelemetry.Context.Propagation.BaggagePropagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
-override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
-override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Fields.get -> System.Collections.Generic.ISet
-override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
-override OpenTelemetry.Context.Propagation.PropagationContext.Equals(object obj) -> bool
+~override OpenTelemetry.Context.Propagation.B3Propagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
+~override OpenTelemetry.Context.Propagation.B3Propagator.Fields.get -> System.Collections.Generic.ISet
+~override OpenTelemetry.Context.Propagation.B3Propagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
+~override OpenTelemetry.Context.Propagation.BaggagePropagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
+~override OpenTelemetry.Context.Propagation.BaggagePropagator.Fields.get -> System.Collections.Generic.ISet
+~override OpenTelemetry.Context.Propagation.BaggagePropagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
+~override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
+~override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Fields.get -> System.Collections.Generic.ISet
+~override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
+~override OpenTelemetry.Context.Propagation.PropagationContext.Equals(object obj) -> bool
override OpenTelemetry.Context.Propagation.PropagationContext.GetHashCode() -> int
-override OpenTelemetry.Context.Propagation.TraceContextPropagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
-override OpenTelemetry.Context.Propagation.TraceContextPropagator.Fields.get -> System.Collections.Generic.ISet
-override OpenTelemetry.Context.Propagation.TraceContextPropagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
+~override OpenTelemetry.Context.Propagation.TraceContextPropagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
+~override OpenTelemetry.Context.Propagation.TraceContextPropagator.Fields.get -> System.Collections.Generic.ISet
+~override OpenTelemetry.Context.Propagation.TraceContextPropagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
override OpenTelemetry.Context.RemotingRuntimeContextSlot.Get() -> T
override OpenTelemetry.Context.RemotingRuntimeContextSlot.Set(T value) -> void
override OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.Dispose(bool disposing) -> void
override OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.Get() -> T
override OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.Set(T value) -> void
-override OpenTelemetry.Trace.Link.Equals(object obj) -> bool
+~override OpenTelemetry.Trace.Link.Equals(object obj) -> bool
override OpenTelemetry.Trace.Link.GetHashCode() -> int
-override OpenTelemetry.Trace.SpanContext.Equals(object obj) -> bool
+~override OpenTelemetry.Trace.SpanContext.Equals(object obj) -> bool
override OpenTelemetry.Trace.SpanContext.GetHashCode() -> int
-override OpenTelemetry.Trace.Status.Equals(object obj) -> bool
+~override OpenTelemetry.Trace.Status.Equals(object obj) -> bool
override OpenTelemetry.Trace.Status.GetHashCode() -> int
-override OpenTelemetry.Trace.Status.ToString() -> string
+~override OpenTelemetry.Trace.Status.ToString() -> string
static OpenTelemetry.ActivityContextExtensions.IsValid(this System.Diagnostics.ActivityContext ctx) -> bool
static OpenTelemetry.Baggage.ClearBaggage(OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> OpenTelemetry.Baggage
-static OpenTelemetry.Baggage.Create(System.Collections.Generic.Dictionary baggageItems = null) -> OpenTelemetry.Baggage
+~static OpenTelemetry.Baggage.Create(System.Collections.Generic.Dictionary baggageItems = null) -> OpenTelemetry.Baggage
static OpenTelemetry.Baggage.Current.get -> OpenTelemetry.Baggage
static OpenTelemetry.Baggage.Current.set -> void
-static OpenTelemetry.Baggage.GetBaggage(OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> System.Collections.Generic.IReadOnlyDictionary
-static OpenTelemetry.Baggage.GetBaggage(string name, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> string
-static OpenTelemetry.Baggage.GetEnumerator(OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> System.Collections.Generic.Dictionary.Enumerator
+~static OpenTelemetry.Baggage.GetBaggage(OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> System.Collections.Generic.IReadOnlyDictionary
+~static OpenTelemetry.Baggage.GetBaggage(string name, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> string
+~static OpenTelemetry.Baggage.GetEnumerator(OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> System.Collections.Generic.Dictionary.Enumerator
static OpenTelemetry.Baggage.operator !=(OpenTelemetry.Baggage left, OpenTelemetry.Baggage right) -> bool
static OpenTelemetry.Baggage.operator ==(OpenTelemetry.Baggage left, OpenTelemetry.Baggage right) -> bool
-static OpenTelemetry.Baggage.RemoveBaggage(string name, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> OpenTelemetry.Baggage
-static OpenTelemetry.Baggage.SetBaggage(string name, string value, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> OpenTelemetry.Baggage
-static OpenTelemetry.Baggage.SetBaggage(System.Collections.Generic.IEnumerable> baggageItems, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> OpenTelemetry.Baggage
+~static OpenTelemetry.Baggage.RemoveBaggage(string name, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> OpenTelemetry.Baggage
+~static OpenTelemetry.Baggage.SetBaggage(string name, string value, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> OpenTelemetry.Baggage
+~static OpenTelemetry.Baggage.SetBaggage(System.Collections.Generic.IEnumerable> baggageItems, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> OpenTelemetry.Baggage
static OpenTelemetry.Context.Propagation.PropagationContext.operator !=(OpenTelemetry.Context.Propagation.PropagationContext left, OpenTelemetry.Context.Propagation.PropagationContext right) -> bool
static OpenTelemetry.Context.Propagation.PropagationContext.operator ==(OpenTelemetry.Context.Propagation.PropagationContext left, OpenTelemetry.Context.Propagation.PropagationContext right) -> bool
-static OpenTelemetry.Context.Propagation.Propagators.DefaultTextMapPropagator.get -> OpenTelemetry.Context.Propagation.TextMapPropagator
-static OpenTelemetry.Context.RuntimeContext.ContextSlotType.get -> System.Type
-static OpenTelemetry.Context.RuntimeContext.ContextSlotType.set -> void
-static OpenTelemetry.Context.RuntimeContext.GetSlot(string slotName) -> OpenTelemetry.Context.RuntimeContextSlot
-static OpenTelemetry.Context.RuntimeContext.GetValue(string slotName) -> object
-static OpenTelemetry.Context.RuntimeContext.GetValue(string slotName) -> T
-static OpenTelemetry.Context.RuntimeContext.RegisterSlot(string slotName) -> OpenTelemetry.Context.RuntimeContextSlot
-static OpenTelemetry.Context.RuntimeContext.SetValue(string slotName, object value) -> void
-static OpenTelemetry.Context.RuntimeContext.SetValue(string slotName, T value) -> void
-static OpenTelemetry.Trace.ActivityExtensions.GetStatus(this System.Diagnostics.Activity activity) -> OpenTelemetry.Trace.Status
-static OpenTelemetry.Trace.ActivityExtensions.RecordException(this System.Diagnostics.Activity activity, System.Exception ex) -> void
-static OpenTelemetry.Trace.ActivityExtensions.SetStatus(this System.Diagnostics.Activity activity, OpenTelemetry.Trace.Status status) -> void
+~static OpenTelemetry.Context.Propagation.Propagators.DefaultTextMapPropagator.get -> OpenTelemetry.Context.Propagation.TextMapPropagator
+~static OpenTelemetry.Context.RuntimeContext.ContextSlotType.get -> System.Type
+~static OpenTelemetry.Context.RuntimeContext.ContextSlotType.set -> void
+~static OpenTelemetry.Context.RuntimeContext.GetSlot(string slotName) -> OpenTelemetry.Context.RuntimeContextSlot
+~static OpenTelemetry.Context.RuntimeContext.GetValue(string slotName) -> object
+~static OpenTelemetry.Context.RuntimeContext.GetValue(string slotName) -> T
+~static OpenTelemetry.Context.RuntimeContext.RegisterSlot(string slotName) -> OpenTelemetry.Context.RuntimeContextSlot
+~static OpenTelemetry.Context.RuntimeContext.SetValue(string slotName, object value) -> void
+~static OpenTelemetry.Context.RuntimeContext.SetValue(string slotName, T value) -> void
+~static OpenTelemetry.Trace.ActivityExtensions.GetStatus(this System.Diagnostics.Activity activity) -> OpenTelemetry.Trace.Status
+~static OpenTelemetry.Trace.ActivityExtensions.RecordException(this System.Diagnostics.Activity activity, System.Exception ex) -> void
+~static OpenTelemetry.Trace.ActivityExtensions.SetStatus(this System.Diagnostics.Activity activity, OpenTelemetry.Trace.Status status) -> void
static OpenTelemetry.Trace.Link.operator !=(OpenTelemetry.Trace.Link link1, OpenTelemetry.Trace.Link link2) -> bool
static OpenTelemetry.Trace.Link.operator ==(OpenTelemetry.Trace.Link link1, OpenTelemetry.Trace.Link link2) -> bool
static OpenTelemetry.Trace.SpanContext.implicit operator System.Diagnostics.ActivityContext(OpenTelemetry.Trace.SpanContext spanContext) -> System.Diagnostics.ActivityContext
@@ -215,9 +215,9 @@ static OpenTelemetry.Trace.SpanContext.operator !=(OpenTelemetry.Trace.SpanConte
static OpenTelemetry.Trace.SpanContext.operator ==(OpenTelemetry.Trace.SpanContext spanContext1, OpenTelemetry.Trace.SpanContext spanContext2) -> bool
static OpenTelemetry.Trace.Status.operator !=(OpenTelemetry.Trace.Status status1, OpenTelemetry.Trace.Status status2) -> bool
static OpenTelemetry.Trace.Status.operator ==(OpenTelemetry.Trace.Status status1, OpenTelemetry.Trace.Status status2) -> bool
-static OpenTelemetry.Trace.Tracer.CurrentSpan.get -> OpenTelemetry.Trace.TelemetrySpan
-static OpenTelemetry.Trace.Tracer.WithSpan(OpenTelemetry.Trace.TelemetrySpan span) -> OpenTelemetry.Trace.TelemetrySpan
-static OpenTelemetry.Trace.TracerProvider.Default.get -> OpenTelemetry.Trace.TracerProvider
+~static OpenTelemetry.Trace.Tracer.CurrentSpan.get -> OpenTelemetry.Trace.TelemetrySpan
+~static OpenTelemetry.Trace.Tracer.WithSpan(OpenTelemetry.Trace.TelemetrySpan span) -> OpenTelemetry.Trace.TelemetrySpan
+~static OpenTelemetry.Trace.TracerProvider.Default.get -> OpenTelemetry.Trace.TracerProvider
static readonly OpenTelemetry.Trace.Status.Error -> OpenTelemetry.Trace.Status
static readonly OpenTelemetry.Trace.Status.Ok -> OpenTelemetry.Trace.Status
static readonly OpenTelemetry.Trace.Status.Unset -> OpenTelemetry.Trace.Status
diff --git a/src/OpenTelemetry.Api/.publicApi/net462/PublicAPI.Unshipped.txt b/src/OpenTelemetry.Api/.publicApi/net462/PublicAPI.Unshipped.txt
index 7883a7d9c2a..7a2d7df5780 100644
--- a/src/OpenTelemetry.Api/.publicApi/net462/PublicAPI.Unshipped.txt
+++ b/src/OpenTelemetry.Api/.publicApi/net462/PublicAPI.Unshipped.txt
@@ -1 +1,73 @@
-static OpenTelemetry.Trace.ActivityExtensions.RecordException(this System.Diagnostics.Activity activity, System.Exception ex, in System.Diagnostics.TagList tags) -> void
+#nullable enable
+abstract OpenTelemetry.Logs.Logger.EmitEvent(string! name, in OpenTelemetry.Logs.LogRecordData data, in OpenTelemetry.Logs.LogRecordAttributeList attributes = default(OpenTelemetry.Logs.LogRecordAttributeList)) -> void
+abstract OpenTelemetry.Logs.Logger.EmitLog(in OpenTelemetry.Logs.LogRecordData data, in OpenTelemetry.Logs.LogRecordAttributeList attributes = default(OpenTelemetry.Logs.LogRecordAttributeList)) -> void
+OpenTelemetry.InstrumentationScope
+OpenTelemetry.InstrumentationScope.Attributes.get -> System.Collections.Generic.IReadOnlyDictionary?
+OpenTelemetry.InstrumentationScope.Attributes.init -> void
+OpenTelemetry.InstrumentationScope.InstrumentationScope() -> void
+OpenTelemetry.InstrumentationScope.InstrumentationScope(string? name) -> void
+OpenTelemetry.InstrumentationScope.Name.get -> string!
+OpenTelemetry.InstrumentationScope.SchemaUrl.get -> string?
+OpenTelemetry.InstrumentationScope.SchemaUrl.init -> void
+OpenTelemetry.InstrumentationScope.Version.get -> string?
+OpenTelemetry.InstrumentationScope.Version.init -> void
+OpenTelemetry.Logs.IDeferredLoggerProviderBuilder
+OpenTelemetry.Logs.IDeferredLoggerProviderBuilder.Configure(System.Action! configure) -> OpenTelemetry.Logs.LoggerProviderBuilder!
+OpenTelemetry.Logs.Logger
+OpenTelemetry.Logs.Logger.Logger(OpenTelemetry.Logs.LoggerOptions! options) -> void
+OpenTelemetry.Logs.Logger.Options.get -> OpenTelemetry.Logs.LoggerOptions!
+OpenTelemetry.Logs.LoggerOptions
+OpenTelemetry.Logs.LoggerOptions.EventDomain.get -> string?
+OpenTelemetry.Logs.LoggerOptions.EventDomain.init -> void
+OpenTelemetry.Logs.LoggerOptions.IncludeTraceContext.get -> bool
+OpenTelemetry.Logs.LoggerOptions.IncludeTraceContext.init -> void
+OpenTelemetry.Logs.LoggerOptions.InstrumentationScope.get -> OpenTelemetry.InstrumentationScope!
+OpenTelemetry.Logs.LoggerOptions.LoggerOptions() -> void
+OpenTelemetry.Logs.LoggerOptions.LoggerOptions(OpenTelemetry.InstrumentationScope! instrumentationScope) -> void
+OpenTelemetry.Logs.LoggerOptions.LoggerOptions(string? name) -> void
+OpenTelemetry.Logs.LoggerProvider
+OpenTelemetry.Logs.LoggerProvider.GetLogger() -> OpenTelemetry.Logs.Logger!
+OpenTelemetry.Logs.LoggerProvider.GetLogger(OpenTelemetry.InstrumentationScope! instrumentationScope) -> OpenTelemetry.Logs.Logger!
+OpenTelemetry.Logs.LoggerProvider.GetLogger(string? name) -> OpenTelemetry.Logs.Logger!
+OpenTelemetry.Logs.LoggerProvider.LoggerProvider() -> void
+OpenTelemetry.Logs.LoggerProviderBuilder
+OpenTelemetry.Logs.LoggerProviderBuilder.LoggerProviderBuilder() -> void
+OpenTelemetry.Logs.LogRecordAttributeList
+OpenTelemetry.Logs.LogRecordAttributeList.Add(string! key, object? value) -> void
+OpenTelemetry.Logs.LogRecordAttributeList.Add(System.Collections.Generic.KeyValuePair attribute) -> void
+OpenTelemetry.Logs.LogRecordAttributeList.Count.get -> int
+OpenTelemetry.Logs.LogRecordAttributeList.Enumerator
+OpenTelemetry.Logs.LogRecordAttributeList.Enumerator.Current.get -> System.Collections.Generic.KeyValuePair
+OpenTelemetry.Logs.LogRecordAttributeList.Enumerator.Dispose() -> void
+OpenTelemetry.Logs.LogRecordAttributeList.Enumerator.Enumerator() -> void
+OpenTelemetry.Logs.LogRecordAttributeList.Enumerator.MoveNext() -> bool
+OpenTelemetry.Logs.LogRecordAttributeList.GetEnumerator() -> OpenTelemetry.Logs.LogRecordAttributeList.Enumerator
+OpenTelemetry.Logs.LogRecordAttributeList.LogRecordAttributeList() -> void
+OpenTelemetry.Logs.LogRecordAttributeList.RecordException(System.Exception! exception) -> void
+OpenTelemetry.Logs.LogRecordAttributeList.this[int index].get -> System.Collections.Generic.KeyValuePair
+OpenTelemetry.Logs.LogRecordAttributeList.this[int index].set -> void
+OpenTelemetry.Logs.LogRecordAttributeList.this[string! key].set -> void
+OpenTelemetry.Logs.LogRecordData
+OpenTelemetry.Logs.LogRecordData.Body.get -> string?
+OpenTelemetry.Logs.LogRecordData.Body.set -> void
+OpenTelemetry.Logs.LogRecordData.LogRecordData() -> void
+OpenTelemetry.Logs.LogRecordData.LogRecordData(System.Diagnostics.Activity? activity) -> void
+OpenTelemetry.Logs.LogRecordData.Severity.get -> OpenTelemetry.Logs.LogRecordSeverity?
+OpenTelemetry.Logs.LogRecordData.Severity.set -> void
+OpenTelemetry.Logs.LogRecordData.SpanId.get -> System.Diagnostics.ActivitySpanId
+OpenTelemetry.Logs.LogRecordData.SpanId.set -> void
+OpenTelemetry.Logs.LogRecordData.Timestamp.get -> System.DateTime
+OpenTelemetry.Logs.LogRecordData.Timestamp.set -> void
+OpenTelemetry.Logs.LogRecordData.TraceFlags.get -> System.Diagnostics.ActivityTraceFlags
+OpenTelemetry.Logs.LogRecordData.TraceFlags.set -> void
+OpenTelemetry.Logs.LogRecordData.TraceId.get -> System.Diagnostics.ActivityTraceId
+OpenTelemetry.Logs.LogRecordData.TraceId.set -> void
+OpenTelemetry.Logs.LogRecordSeverity
+OpenTelemetry.Logs.LogRecordSeverity.Debug = 1 -> OpenTelemetry.Logs.LogRecordSeverity
+OpenTelemetry.Logs.LogRecordSeverity.Error = 4 -> OpenTelemetry.Logs.LogRecordSeverity
+OpenTelemetry.Logs.LogRecordSeverity.Fatal = 5 -> OpenTelemetry.Logs.LogRecordSeverity
+OpenTelemetry.Logs.LogRecordSeverity.Information = 2 -> OpenTelemetry.Logs.LogRecordSeverity
+OpenTelemetry.Logs.LogRecordSeverity.Trace = 0 -> OpenTelemetry.Logs.LogRecordSeverity
+OpenTelemetry.Logs.LogRecordSeverity.Warning = 3 -> OpenTelemetry.Logs.LogRecordSeverity
+~static OpenTelemetry.Trace.ActivityExtensions.RecordException(this System.Diagnostics.Activity activity, System.Exception ex, in System.Diagnostics.TagList tags) -> void
+virtual OpenTelemetry.Logs.LoggerProvider.GetLogger(OpenTelemetry.Logs.LoggerOptions! options) -> OpenTelemetry.Logs.Logger!
diff --git a/src/OpenTelemetry.Api/.publicApi/net6.0/PublicAPI.Shipped.txt b/src/OpenTelemetry.Api/.publicApi/net6.0/PublicAPI.Shipped.txt
new file mode 100644
index 00000000000..329838ddef1
--- /dev/null
+++ b/src/OpenTelemetry.Api/.publicApi/net6.0/PublicAPI.Shipped.txt
@@ -0,0 +1,219 @@
+~abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
+~abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Fields.get -> System.Collections.Generic.ISet
+~abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
+abstract OpenTelemetry.Context.RuntimeContextSlot.Get() -> T
+abstract OpenTelemetry.Context.RuntimeContextSlot.Set(T value) -> void
+~abstract OpenTelemetry.Metrics.MeterProviderBuilder.AddInstrumentation(System.Func instrumentationFactory) -> OpenTelemetry.Metrics.MeterProviderBuilder
+~abstract OpenTelemetry.Metrics.MeterProviderBuilder.AddMeter(params string[] names) -> OpenTelemetry.Metrics.MeterProviderBuilder
+~abstract OpenTelemetry.Trace.TracerProviderBuilder.AddInstrumentation(System.Func instrumentationFactory) -> OpenTelemetry.Trace.TracerProviderBuilder
+~abstract OpenTelemetry.Trace.TracerProviderBuilder.AddLegacySource(string operationName) -> OpenTelemetry.Trace.TracerProviderBuilder
+~abstract OpenTelemetry.Trace.TracerProviderBuilder.AddSource(params string[] names) -> OpenTelemetry.Trace.TracerProviderBuilder
+OpenTelemetry.ActivityContextExtensions
+OpenTelemetry.Baggage
+OpenTelemetry.Baggage.Baggage() -> void
+OpenTelemetry.Baggage.ClearBaggage() -> OpenTelemetry.Baggage
+OpenTelemetry.Baggage.Count.get -> int
+OpenTelemetry.Baggage.Equals(OpenTelemetry.Baggage other) -> bool
+~OpenTelemetry.Baggage.GetBaggage() -> System.Collections.Generic.IReadOnlyDictionary
+~OpenTelemetry.Baggage.GetBaggage(string name) -> string
+~OpenTelemetry.Baggage.GetEnumerator() -> System.Collections.Generic.Dictionary.Enumerator
+~OpenTelemetry.Baggage.RemoveBaggage(string name) -> OpenTelemetry.Baggage
+~OpenTelemetry.Baggage.SetBaggage(params System.Collections.Generic.KeyValuePair[] baggageItems) -> OpenTelemetry.Baggage
+~OpenTelemetry.Baggage.SetBaggage(string name, string value) -> OpenTelemetry.Baggage
+~OpenTelemetry.Baggage.SetBaggage(System.Collections.Generic.IEnumerable> baggageItems) -> OpenTelemetry.Baggage
+OpenTelemetry.BaseProvider
+OpenTelemetry.BaseProvider.~BaseProvider() -> void
+OpenTelemetry.BaseProvider.BaseProvider() -> void
+OpenTelemetry.BaseProvider.Dispose() -> void
+OpenTelemetry.Context.AsyncLocalRuntimeContextSlot
+~OpenTelemetry.Context.AsyncLocalRuntimeContextSlot.AsyncLocalRuntimeContextSlot(string name) -> void
+~OpenTelemetry.Context.AsyncLocalRuntimeContextSlot.Value.get -> object
+~OpenTelemetry.Context.AsyncLocalRuntimeContextSlot.Value.set -> void
+OpenTelemetry.Context.IRuntimeContextSlotValueAccessor
+~OpenTelemetry.Context.IRuntimeContextSlotValueAccessor.Value.get -> object
+~OpenTelemetry.Context.IRuntimeContextSlotValueAccessor.Value.set -> void
+OpenTelemetry.Context.Propagation.B3Propagator
+OpenTelemetry.Context.Propagation.B3Propagator.B3Propagator() -> void
+OpenTelemetry.Context.Propagation.B3Propagator.B3Propagator(bool singleHeader) -> void
+OpenTelemetry.Context.Propagation.BaggagePropagator
+OpenTelemetry.Context.Propagation.BaggagePropagator.BaggagePropagator() -> void
+OpenTelemetry.Context.Propagation.CompositeTextMapPropagator
+~OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.CompositeTextMapPropagator(System.Collections.Generic.IEnumerable propagators) -> void
+OpenTelemetry.Context.Propagation.PropagationContext
+OpenTelemetry.Context.Propagation.PropagationContext.ActivityContext.get -> System.Diagnostics.ActivityContext
+OpenTelemetry.Context.Propagation.PropagationContext.Baggage.get -> OpenTelemetry.Baggage
+OpenTelemetry.Context.Propagation.PropagationContext.Equals(OpenTelemetry.Context.Propagation.PropagationContext value) -> bool
+OpenTelemetry.Context.Propagation.PropagationContext.PropagationContext() -> void
+OpenTelemetry.Context.Propagation.PropagationContext.PropagationContext(System.Diagnostics.ActivityContext activityContext, OpenTelemetry.Baggage baggage) -> void
+OpenTelemetry.Context.Propagation.Propagators
+OpenTelemetry.Context.Propagation.TextMapPropagator
+OpenTelemetry.Context.Propagation.TextMapPropagator.TextMapPropagator() -> void
+OpenTelemetry.Context.Propagation.TraceContextPropagator
+OpenTelemetry.Context.Propagation.TraceContextPropagator.TraceContextPropagator() -> void
+OpenTelemetry.Context.RuntimeContext
+OpenTelemetry.Context.RuntimeContextSlot
+OpenTelemetry.Context.RuntimeContextSlot.Dispose() -> void
+~OpenTelemetry.Context.RuntimeContextSlot.Name.get -> string
+~OpenTelemetry.Context.RuntimeContextSlot.RuntimeContextSlot(string name) -> void
+OpenTelemetry.Context.ThreadLocalRuntimeContextSlot
+~OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.ThreadLocalRuntimeContextSlot(string name) -> void
+~OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.Value.get -> object
+~OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.Value.set -> void
+OpenTelemetry.Metrics.IDeferredMeterProviderBuilder
+~OpenTelemetry.Metrics.IDeferredMeterProviderBuilder.Configure(System.Action configure) -> OpenTelemetry.Metrics.MeterProviderBuilder
+OpenTelemetry.Metrics.MeterProvider
+OpenTelemetry.Metrics.MeterProvider.MeterProvider() -> void
+OpenTelemetry.Metrics.MeterProviderBuilder
+OpenTelemetry.Metrics.MeterProviderBuilder.MeterProviderBuilder() -> void
+OpenTelemetry.Trace.ActivityExtensions
+OpenTelemetry.Trace.IDeferredTracerProviderBuilder
+~OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Configure(System.Action configure) -> OpenTelemetry.Trace.TracerProviderBuilder
+OpenTelemetry.Trace.Link
+~OpenTelemetry.Trace.Link.Attributes.get -> System.Collections.Generic.IEnumerable>
+OpenTelemetry.Trace.Link.Context.get -> OpenTelemetry.Trace.SpanContext
+OpenTelemetry.Trace.Link.Equals(OpenTelemetry.Trace.Link other) -> bool
+OpenTelemetry.Trace.Link.Link() -> void
+OpenTelemetry.Trace.Link.Link(in OpenTelemetry.Trace.SpanContext spanContext) -> void
+~OpenTelemetry.Trace.Link.Link(in OpenTelemetry.Trace.SpanContext spanContext, OpenTelemetry.Trace.SpanAttributes attributes) -> void
+OpenTelemetry.Trace.SpanAttributes
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, bool value) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, bool[] values) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, double value) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, double[] values) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, long value) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, long[] values) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, string value) -> void
+~OpenTelemetry.Trace.SpanAttributes.Add(string key, string[] values) -> void
+OpenTelemetry.Trace.SpanAttributes.SpanAttributes() -> void
+~OpenTelemetry.Trace.SpanAttributes.SpanAttributes(System.Collections.Generic.IEnumerable> attributes) -> void
+OpenTelemetry.Trace.SpanContext
+OpenTelemetry.Trace.SpanContext.Equals(OpenTelemetry.Trace.SpanContext other) -> bool
+OpenTelemetry.Trace.SpanContext.IsRemote.get -> bool
+OpenTelemetry.Trace.SpanContext.IsValid.get -> bool
+OpenTelemetry.Trace.SpanContext.SpanContext() -> void
+OpenTelemetry.Trace.SpanContext.SpanContext(in System.Diagnostics.ActivityContext activityContext) -> void
+~OpenTelemetry.Trace.SpanContext.SpanContext(in System.Diagnostics.ActivityTraceId traceId, in System.Diagnostics.ActivitySpanId spanId, System.Diagnostics.ActivityTraceFlags traceFlags, bool isRemote = false, System.Collections.Generic.IEnumerable> traceState = null) -> void
+OpenTelemetry.Trace.SpanContext.SpanId.get -> System.Diagnostics.ActivitySpanId
+OpenTelemetry.Trace.SpanContext.TraceFlags.get -> System.Diagnostics.ActivityTraceFlags
+OpenTelemetry.Trace.SpanContext.TraceId.get -> System.Diagnostics.ActivityTraceId
+~OpenTelemetry.Trace.SpanContext.TraceState.get -> System.Collections.Generic.IEnumerable>
+OpenTelemetry.Trace.SpanKind
+OpenTelemetry.Trace.SpanKind.Client = 3 -> OpenTelemetry.Trace.SpanKind
+OpenTelemetry.Trace.SpanKind.Consumer = 5 -> OpenTelemetry.Trace.SpanKind
+OpenTelemetry.Trace.SpanKind.Internal = 1 -> OpenTelemetry.Trace.SpanKind
+OpenTelemetry.Trace.SpanKind.Producer = 4 -> OpenTelemetry.Trace.SpanKind
+OpenTelemetry.Trace.SpanKind.Server = 2 -> OpenTelemetry.Trace.SpanKind
+OpenTelemetry.Trace.Status
+~OpenTelemetry.Trace.Status.Description.get -> string
+OpenTelemetry.Trace.Status.Equals(OpenTelemetry.Trace.Status other) -> bool
+OpenTelemetry.Trace.Status.Status() -> void
+OpenTelemetry.Trace.Status.StatusCode.get -> OpenTelemetry.Trace.StatusCode
+~OpenTelemetry.Trace.Status.WithDescription(string description) -> OpenTelemetry.Trace.Status
+OpenTelemetry.Trace.StatusCode
+OpenTelemetry.Trace.StatusCode.Error = 2 -> OpenTelemetry.Trace.StatusCode
+OpenTelemetry.Trace.StatusCode.Ok = 1 -> OpenTelemetry.Trace.StatusCode
+OpenTelemetry.Trace.StatusCode.Unset = 0 -> OpenTelemetry.Trace.StatusCode
+OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.AddEvent(string name) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.AddEvent(string name, OpenTelemetry.Trace.SpanAttributes attributes) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.AddEvent(string name, System.DateTimeOffset timestamp) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.AddEvent(string name, System.DateTimeOffset timestamp, OpenTelemetry.Trace.SpanAttributes attributes) -> OpenTelemetry.Trace.TelemetrySpan
+OpenTelemetry.Trace.TelemetrySpan.Context.get -> OpenTelemetry.Trace.SpanContext
+OpenTelemetry.Trace.TelemetrySpan.Dispose() -> void
+OpenTelemetry.Trace.TelemetrySpan.End() -> void
+OpenTelemetry.Trace.TelemetrySpan.End(System.DateTimeOffset endTimestamp) -> void
+OpenTelemetry.Trace.TelemetrySpan.IsRecording.get -> bool
+OpenTelemetry.Trace.TelemetrySpan.ParentSpanId.get -> System.Diagnostics.ActivitySpanId
+~OpenTelemetry.Trace.TelemetrySpan.RecordException(string type, string message, string stacktrace) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.RecordException(System.Exception ex) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, bool value) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, bool[] values) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, double value) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, double[] values) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, int value) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, int[] values) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, string value) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.TelemetrySpan.SetAttribute(string key, string[] values) -> OpenTelemetry.Trace.TelemetrySpan
+OpenTelemetry.Trace.TelemetrySpan.SetStatus(OpenTelemetry.Trace.Status value) -> void
+~OpenTelemetry.Trace.TelemetrySpan.UpdateName(string name) -> OpenTelemetry.Trace.TelemetrySpan
+OpenTelemetry.Trace.Tracer
+~OpenTelemetry.Trace.Tracer.StartActiveSpan(string name, OpenTelemetry.Trace.SpanKind kind = OpenTelemetry.Trace.SpanKind.Internal, in OpenTelemetry.Trace.SpanContext parentContext = default(OpenTelemetry.Trace.SpanContext), OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.Tracer.StartActiveSpan(string name, OpenTelemetry.Trace.SpanKind kind, in OpenTelemetry.Trace.TelemetrySpan parentSpan, OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.Tracer.StartRootSpan(string name, OpenTelemetry.Trace.SpanKind kind = OpenTelemetry.Trace.SpanKind.Internal, OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.Tracer.StartSpan(string name, OpenTelemetry.Trace.SpanKind kind = OpenTelemetry.Trace.SpanKind.Internal, in OpenTelemetry.Trace.SpanContext parentContext = default(OpenTelemetry.Trace.SpanContext), OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
+~OpenTelemetry.Trace.Tracer.StartSpan(string name, OpenTelemetry.Trace.SpanKind kind, in OpenTelemetry.Trace.TelemetrySpan parentSpan, OpenTelemetry.Trace.SpanAttributes initialAttributes = null, System.Collections.Generic.IEnumerable links = null, System.DateTimeOffset startTime = default(System.DateTimeOffset)) -> OpenTelemetry.Trace.TelemetrySpan
+OpenTelemetry.Trace.TracerProvider
+~OpenTelemetry.Trace.TracerProvider.GetTracer(string name, string version = null) -> OpenTelemetry.Trace.Tracer
+OpenTelemetry.Trace.TracerProvider.TracerProvider() -> void
+OpenTelemetry.Trace.TracerProviderBuilder
+OpenTelemetry.Trace.TracerProviderBuilder.TracerProviderBuilder() -> void
+~override OpenTelemetry.Baggage.Equals(object obj) -> bool
+override OpenTelemetry.Baggage.GetHashCode() -> int
+override OpenTelemetry.Context.AsyncLocalRuntimeContextSlot.Get() -> T
+override OpenTelemetry.Context.AsyncLocalRuntimeContextSlot.Set(T value) -> void
+~override OpenTelemetry.Context.Propagation.B3Propagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
+~override OpenTelemetry.Context.Propagation.B3Propagator.Fields.get -> System.Collections.Generic.ISet
+~override OpenTelemetry.Context.Propagation.B3Propagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
+~override OpenTelemetry.Context.Propagation.BaggagePropagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
+~override OpenTelemetry.Context.Propagation.BaggagePropagator.Fields.get -> System.Collections.Generic.ISet
+~override OpenTelemetry.Context.Propagation.BaggagePropagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
+~override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
+~override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Fields.get -> System.Collections.Generic.ISet
+~override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
+~override OpenTelemetry.Context.Propagation.PropagationContext.Equals(object obj) -> bool
+override OpenTelemetry.Context.Propagation.PropagationContext.GetHashCode() -> int
+~override OpenTelemetry.Context.Propagation.TraceContextPropagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
+~override OpenTelemetry.Context.Propagation.TraceContextPropagator.Fields.get -> System.Collections.Generic.ISet
+~override OpenTelemetry.Context.Propagation.TraceContextPropagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
+override OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.Dispose(bool disposing) -> void
+override OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.Get() -> T
+override OpenTelemetry.Context.ThreadLocalRuntimeContextSlot.Set(T value) -> void
+~override OpenTelemetry.Trace.Link.Equals(object obj) -> bool
+override OpenTelemetry.Trace.Link.GetHashCode() -> int
+~override OpenTelemetry.Trace.SpanContext.Equals(object obj) -> bool
+override OpenTelemetry.Trace.SpanContext.GetHashCode() -> int
+~override OpenTelemetry.Trace.Status.Equals(object obj) -> bool
+override OpenTelemetry.Trace.Status.GetHashCode() -> int
+~override OpenTelemetry.Trace.Status.ToString() -> string
+static OpenTelemetry.ActivityContextExtensions.IsValid(this System.Diagnostics.ActivityContext ctx) -> bool
+static OpenTelemetry.Baggage.ClearBaggage(OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> OpenTelemetry.Baggage
+~static OpenTelemetry.Baggage.Create(System.Collections.Generic.Dictionary baggageItems = null) -> OpenTelemetry.Baggage
+static OpenTelemetry.Baggage.Current.get -> OpenTelemetry.Baggage
+static OpenTelemetry.Baggage.Current.set -> void
+~static OpenTelemetry.Baggage.GetBaggage(OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> System.Collections.Generic.IReadOnlyDictionary
+~static OpenTelemetry.Baggage.GetBaggage(string name, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> string
+~static OpenTelemetry.Baggage.GetEnumerator(OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> System.Collections.Generic.Dictionary.Enumerator
+static OpenTelemetry.Baggage.operator !=(OpenTelemetry.Baggage left, OpenTelemetry.Baggage right) -> bool
+static OpenTelemetry.Baggage.operator ==(OpenTelemetry.Baggage left, OpenTelemetry.Baggage right) -> bool
+~static OpenTelemetry.Baggage.RemoveBaggage(string name, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> OpenTelemetry.Baggage
+~static OpenTelemetry.Baggage.SetBaggage(string name, string value, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> OpenTelemetry.Baggage
+~static OpenTelemetry.Baggage.SetBaggage(System.Collections.Generic.IEnumerable> baggageItems, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> OpenTelemetry.Baggage
+static OpenTelemetry.Context.Propagation.PropagationContext.operator !=(OpenTelemetry.Context.Propagation.PropagationContext left, OpenTelemetry.Context.Propagation.PropagationContext right) -> bool
+static OpenTelemetry.Context.Propagation.PropagationContext.operator ==(OpenTelemetry.Context.Propagation.PropagationContext left, OpenTelemetry.Context.Propagation.PropagationContext right) -> bool
+~static OpenTelemetry.Context.Propagation.Propagators.DefaultTextMapPropagator.get -> OpenTelemetry.Context.Propagation.TextMapPropagator
+~static OpenTelemetry.Context.RuntimeContext.ContextSlotType.get -> System.Type
+~static OpenTelemetry.Context.RuntimeContext.ContextSlotType.set -> void
+~static OpenTelemetry.Context.RuntimeContext.GetSlot(string slotName) -> OpenTelemetry.Context.RuntimeContextSlot
+~static OpenTelemetry.Context.RuntimeContext.GetValue(string slotName) -> object
+~static OpenTelemetry.Context.RuntimeContext.GetValue(string slotName) -> T
+~static OpenTelemetry.Context.RuntimeContext.RegisterSlot(string slotName) -> OpenTelemetry.Context.RuntimeContextSlot
+~static OpenTelemetry.Context.RuntimeContext.SetValue(string slotName, object value) -> void
+~static OpenTelemetry.Context.RuntimeContext.SetValue(string slotName, T value) -> void
+~static OpenTelemetry.Trace.ActivityExtensions.GetStatus(this System.Diagnostics.Activity activity) -> OpenTelemetry.Trace.Status
+~static OpenTelemetry.Trace.ActivityExtensions.RecordException(this System.Diagnostics.Activity activity, System.Exception ex) -> void
+~static OpenTelemetry.Trace.ActivityExtensions.SetStatus(this System.Diagnostics.Activity activity, OpenTelemetry.Trace.Status status) -> void
+static OpenTelemetry.Trace.Link.operator !=(OpenTelemetry.Trace.Link link1, OpenTelemetry.Trace.Link link2) -> bool
+static OpenTelemetry.Trace.Link.operator ==(OpenTelemetry.Trace.Link link1, OpenTelemetry.Trace.Link link2) -> bool
+static OpenTelemetry.Trace.SpanContext.implicit operator System.Diagnostics.ActivityContext(OpenTelemetry.Trace.SpanContext spanContext) -> System.Diagnostics.ActivityContext
+static OpenTelemetry.Trace.SpanContext.operator !=(OpenTelemetry.Trace.SpanContext spanContext1, OpenTelemetry.Trace.SpanContext spanContext2) -> bool
+static OpenTelemetry.Trace.SpanContext.operator ==(OpenTelemetry.Trace.SpanContext spanContext1, OpenTelemetry.Trace.SpanContext spanContext2) -> bool
+static OpenTelemetry.Trace.Status.operator !=(OpenTelemetry.Trace.Status status1, OpenTelemetry.Trace.Status status2) -> bool
+static OpenTelemetry.Trace.Status.operator ==(OpenTelemetry.Trace.Status status1, OpenTelemetry.Trace.Status status2) -> bool
+~static OpenTelemetry.Trace.Tracer.CurrentSpan.get -> OpenTelemetry.Trace.TelemetrySpan
+~static OpenTelemetry.Trace.Tracer.WithSpan(OpenTelemetry.Trace.TelemetrySpan span) -> OpenTelemetry.Trace.TelemetrySpan
+~static OpenTelemetry.Trace.TracerProvider.Default.get -> OpenTelemetry.Trace.TracerProvider
+static readonly OpenTelemetry.Trace.Status.Error -> OpenTelemetry.Trace.Status
+static readonly OpenTelemetry.Trace.Status.Ok -> OpenTelemetry.Trace.Status
+static readonly OpenTelemetry.Trace.Status.Unset -> OpenTelemetry.Trace.Status
+virtual OpenTelemetry.BaseProvider.Dispose(bool disposing) -> void
+virtual OpenTelemetry.Context.RuntimeContextSlot.Dispose(bool disposing) -> void
diff --git a/src/OpenTelemetry.Api/.publicApi/net6.0/PublicAPI.Unshipped.txt b/src/OpenTelemetry.Api/.publicApi/net6.0/PublicAPI.Unshipped.txt
new file mode 100644
index 00000000000..7a2d7df5780
--- /dev/null
+++ b/src/OpenTelemetry.Api/.publicApi/net6.0/PublicAPI.Unshipped.txt
@@ -0,0 +1,73 @@
+#nullable enable
+abstract OpenTelemetry.Logs.Logger.EmitEvent(string! name, in OpenTelemetry.Logs.LogRecordData data, in OpenTelemetry.Logs.LogRecordAttributeList attributes = default(OpenTelemetry.Logs.LogRecordAttributeList)) -> void
+abstract OpenTelemetry.Logs.Logger.EmitLog(in OpenTelemetry.Logs.LogRecordData data, in OpenTelemetry.Logs.LogRecordAttributeList attributes = default(OpenTelemetry.Logs.LogRecordAttributeList)) -> void
+OpenTelemetry.InstrumentationScope
+OpenTelemetry.InstrumentationScope.Attributes.get -> System.Collections.Generic.IReadOnlyDictionary?
+OpenTelemetry.InstrumentationScope.Attributes.init -> void
+OpenTelemetry.InstrumentationScope.InstrumentationScope() -> void
+OpenTelemetry.InstrumentationScope.InstrumentationScope(string? name) -> void
+OpenTelemetry.InstrumentationScope.Name.get -> string!
+OpenTelemetry.InstrumentationScope.SchemaUrl.get -> string?
+OpenTelemetry.InstrumentationScope.SchemaUrl.init -> void
+OpenTelemetry.InstrumentationScope.Version.get -> string?
+OpenTelemetry.InstrumentationScope.Version.init -> void
+OpenTelemetry.Logs.IDeferredLoggerProviderBuilder
+OpenTelemetry.Logs.IDeferredLoggerProviderBuilder.Configure(System.Action! configure) -> OpenTelemetry.Logs.LoggerProviderBuilder!
+OpenTelemetry.Logs.Logger
+OpenTelemetry.Logs.Logger.Logger(OpenTelemetry.Logs.LoggerOptions! options) -> void
+OpenTelemetry.Logs.Logger.Options.get -> OpenTelemetry.Logs.LoggerOptions!
+OpenTelemetry.Logs.LoggerOptions
+OpenTelemetry.Logs.LoggerOptions.EventDomain.get -> string?
+OpenTelemetry.Logs.LoggerOptions.EventDomain.init -> void
+OpenTelemetry.Logs.LoggerOptions.IncludeTraceContext.get -> bool
+OpenTelemetry.Logs.LoggerOptions.IncludeTraceContext.init -> void
+OpenTelemetry.Logs.LoggerOptions.InstrumentationScope.get -> OpenTelemetry.InstrumentationScope!
+OpenTelemetry.Logs.LoggerOptions.LoggerOptions() -> void
+OpenTelemetry.Logs.LoggerOptions.LoggerOptions(OpenTelemetry.InstrumentationScope! instrumentationScope) -> void
+OpenTelemetry.Logs.LoggerOptions.LoggerOptions(string? name) -> void
+OpenTelemetry.Logs.LoggerProvider
+OpenTelemetry.Logs.LoggerProvider.GetLogger() -> OpenTelemetry.Logs.Logger!
+OpenTelemetry.Logs.LoggerProvider.GetLogger(OpenTelemetry.InstrumentationScope! instrumentationScope) -> OpenTelemetry.Logs.Logger!
+OpenTelemetry.Logs.LoggerProvider.GetLogger(string? name) -> OpenTelemetry.Logs.Logger!
+OpenTelemetry.Logs.LoggerProvider.LoggerProvider() -> void
+OpenTelemetry.Logs.LoggerProviderBuilder
+OpenTelemetry.Logs.LoggerProviderBuilder.LoggerProviderBuilder() -> void
+OpenTelemetry.Logs.LogRecordAttributeList
+OpenTelemetry.Logs.LogRecordAttributeList.Add(string! key, object? value) -> void
+OpenTelemetry.Logs.LogRecordAttributeList.Add(System.Collections.Generic.KeyValuePair attribute) -> void
+OpenTelemetry.Logs.LogRecordAttributeList.Count.get -> int
+OpenTelemetry.Logs.LogRecordAttributeList.Enumerator
+OpenTelemetry.Logs.LogRecordAttributeList.Enumerator.Current.get -> System.Collections.Generic.KeyValuePair
+OpenTelemetry.Logs.LogRecordAttributeList.Enumerator.Dispose() -> void
+OpenTelemetry.Logs.LogRecordAttributeList.Enumerator.Enumerator() -> void
+OpenTelemetry.Logs.LogRecordAttributeList.Enumerator.MoveNext() -> bool
+OpenTelemetry.Logs.LogRecordAttributeList.GetEnumerator() -> OpenTelemetry.Logs.LogRecordAttributeList.Enumerator
+OpenTelemetry.Logs.LogRecordAttributeList.LogRecordAttributeList() -> void
+OpenTelemetry.Logs.LogRecordAttributeList.RecordException(System.Exception! exception) -> void
+OpenTelemetry.Logs.LogRecordAttributeList.this[int index].get -> System.Collections.Generic.KeyValuePair
+OpenTelemetry.Logs.LogRecordAttributeList.this[int index].set -> void
+OpenTelemetry.Logs.LogRecordAttributeList.this[string! key].set -> void
+OpenTelemetry.Logs.LogRecordData
+OpenTelemetry.Logs.LogRecordData.Body.get -> string?
+OpenTelemetry.Logs.LogRecordData.Body.set -> void
+OpenTelemetry.Logs.LogRecordData.LogRecordData() -> void
+OpenTelemetry.Logs.LogRecordData.LogRecordData(System.Diagnostics.Activity? activity) -> void
+OpenTelemetry.Logs.LogRecordData.Severity.get -> OpenTelemetry.Logs.LogRecordSeverity?
+OpenTelemetry.Logs.LogRecordData.Severity.set -> void
+OpenTelemetry.Logs.LogRecordData.SpanId.get -> System.Diagnostics.ActivitySpanId
+OpenTelemetry.Logs.LogRecordData.SpanId.set -> void
+OpenTelemetry.Logs.LogRecordData.Timestamp.get -> System.DateTime
+OpenTelemetry.Logs.LogRecordData.Timestamp.set -> void
+OpenTelemetry.Logs.LogRecordData.TraceFlags.get -> System.Diagnostics.ActivityTraceFlags
+OpenTelemetry.Logs.LogRecordData.TraceFlags.set -> void
+OpenTelemetry.Logs.LogRecordData.TraceId.get -> System.Diagnostics.ActivityTraceId
+OpenTelemetry.Logs.LogRecordData.TraceId.set -> void
+OpenTelemetry.Logs.LogRecordSeverity
+OpenTelemetry.Logs.LogRecordSeverity.Debug = 1 -> OpenTelemetry.Logs.LogRecordSeverity
+OpenTelemetry.Logs.LogRecordSeverity.Error = 4 -> OpenTelemetry.Logs.LogRecordSeverity
+OpenTelemetry.Logs.LogRecordSeverity.Fatal = 5 -> OpenTelemetry.Logs.LogRecordSeverity
+OpenTelemetry.Logs.LogRecordSeverity.Information = 2 -> OpenTelemetry.Logs.LogRecordSeverity
+OpenTelemetry.Logs.LogRecordSeverity.Trace = 0 -> OpenTelemetry.Logs.LogRecordSeverity
+OpenTelemetry.Logs.LogRecordSeverity.Warning = 3 -> OpenTelemetry.Logs.LogRecordSeverity
+~static OpenTelemetry.Trace.ActivityExtensions.RecordException(this System.Diagnostics.Activity activity, System.Exception ex, in System.Diagnostics.TagList tags) -> void
+virtual OpenTelemetry.Logs.LoggerProvider.GetLogger(OpenTelemetry.Logs.LoggerOptions! options) -> OpenTelemetry.Logs.Logger!
diff --git a/src/OpenTelemetry.Api/.publicApi/netstandard2.0/PublicAPI.Shipped.txt b/src/OpenTelemetry.Api/.publicApi/netstandard2.0/PublicAPI.Shipped.txt
index 7f06c3364e1..329838ddef1 100644
--- a/src/OpenTelemetry.Api/.publicApi/netstandard2.0/PublicAPI.Shipped.txt
+++ b/src/OpenTelemetry.Api/.publicApi/netstandard2.0/PublicAPI.Shipped.txt
@@ -1,44 +1,44 @@
-abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
-abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Fields.get -> System.Collections.Generic.ISet
-abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action setter) -> void
+~abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Extract(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
+~abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Fields.get -> System.Collections.Generic.ISet
+~abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Inject(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action