Open
Description
The OpenTelemetry Specification has been updated with some new logging APIs marked stable:
API: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/bridge-api.md
SDK: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/sdk.md
This issue is for tracking the work to implement this in OTel .NET.
Note: This work has been made an experimental feature (see #4735). The APIs will be public
in prerelease builds of OpenTelemetry .NET (starting with 1.6.0-alpha.1) but will be internal
in stable builds.
- OpenTelemetry.Api updates
- Initial definition: [api-logs] Add internal artifacts for OTel spec log bridge API #4422
- Drop
class InstrumentationScope
: [api-logs] Remove InstrumentationScope class #4436 -
LogRecordSeverity
enum: [api-logs] LogRecordSeverity enum tweaks #4451 - Expose implementation publicly: [api-logs] Expose logging artifacts as public #4552
- EmitLog API feedback: [api-logs] Removed default parameter from the EmitLog API #4559
- OpenTelemetry.Api.ProviderBuilderExtensions updates (DI surface)
- Initial definition: [di-logs] Add internal artifacts for OTel spec log bridge API #4434
- Updates for recent changes to tracing & metrics: [di] Expose a detached LoggerProviderBuilder extension on IServiceCollection which may modify services #4531
- Expose implementation publicly: [di-logs] Expose logging implementation as public #4558
- OpenTelemetry (SDK) updates
- Define IServiceCollection builder: [sdk-logs] Add LoggerProviderServiceCollectionBuilder to SDK #4441
- Define BatchExportLogRecordProcessorOptions: [sdk-logs] Add BatchExportLogRecordProcessorOptions to SDK #4446
- Define sdk builder: [sdk-logs] Add LoggerProviderBuilderSdk to SDK #4447
- Define builder extensions: [sdk-logs] Add LoggerProviderBuilderExtensions to SDK #4450
- Define provider extensions: [sdk-logs] Add LoggerProvider extensions #4480
- Define LoggerProviderSdk: [sdk-logs] Implement LoggerProviderSdk #4453
- Define LoggerSdk: [sdk-logs] Define LoggerSdk #4455
- LogRecord updates: [sdk-logs] Update LogRecord for Logger API additions #4456
- Update BatchExportLogRecordProcessorOptions for spec stable: [sdk-logs] Update the XML comments on BatchExportLogRecordProcessorOptions #4463
- Define Sdk.CreateLoggerProviderBuilder: [sdk-logs] Add Sdk.CreateLoggerProviderBuilder #4464
- Add tests for sdk builder extensions & provider: [sdk-logs] Tests and bug fixes for logging builder & provider #4467
- Update ILoggerProvider to use OTel LoggerProvider: [sdk-logs] Update ILogger integration to use LoggerProvider #4473
- New API surface for passing LoggerProvider to ILogger integration: [logging] UseOpenTelemetry extension & WithLogging default behavior #5072
- Proposal 1: [sdk-logs] Introduce ConfigureOpenTelemetry ILoggingBuilder extension (proposal 1) #4496
- Proposal 2: [sdk-logs] Introduce AddOpenTelemetryLogging ILoggingBuilder extension (proposal 2) #4501
- Proposal 3: [sdk-logs] Support builder behavior on OpenTelemetryLoggerOptions (proposal 3) #4502
- Proposal 4: [sdk-logs] Introduce OpenTelemetryLoggingBuilder (proposal 4) #4506
- New API surface for passing LoggerProvider to ILogger integration: [logging] UseOpenTelemetry extension & WithLogging default behavior #5072
- Expose implementation publicly: [sdk-logs] Expose logging SDK implementation as public #4568
- Instrumentation scope version fix: [sdk.logs] Fix the version reported by LogRecord.Logger when using ILogger integration #4635
- OpenTelemetry.Extensions.Hosting updates
- Define
WithLogging
: [hosting-logs] Add WithLogging #4483 - Remove auto-registration of
ILogger
: [hosting-logs] Don't register ILogger when calling WithLogging #4535 - Expose implementation publicly: [build] Use compiler constant to toggle experimental public apis #4735
- Define
- OpenTelemetry.Exporter.InMemory updates
- Add
LoggerProviderBuilder
registration extension: [inmemory-exporter] Add extension on LoggerProviderBuilder #4541 - Expose implementation publicly: [inmemory-logs] Expose LoggerProviderBuilder extension #4584
- Add
- OpenTelemetry.Exporter.Console updates
- Add
LoggerProviderBuilder
registration extension: [console-exporter] Add extension on LoggerProviderBuilder #4549 - Updates for
LogRecord.Severity
&LogRecord.SeverityText
: [sdk-logs] Expose logging SDK implementation as public #4568 - Expose implementation publicly: [console-logs] Expose LoggerProviderBuilder extension #4583
- Add
- OpenTelemetry.Exporter.OpenTelemetryProtocol.Logs updates
- Updates for
LogRecord.Severity
&LogRecord.SeverityText
: [sdk-logs] Expose logging SDK implementation as public #4568 - Add
LoggerProviderBuilder
registration extension: Add otlp log extension methods for LoggerProviderBuilder #5103 - Add support for
Body
set directly onLogRecord
: [Logs Bridge API] Add support for Body set directly on LogRecord for OTLP Exporter. #5268 - Add support for
LogRecord
s withoutCategoryName
set: [otlp] Use LogRecord.Logger.Name for instrumentation scope if LogRecord.CategoryName is null #5300
- Updates for
- Before marking stable future open/follow-up items:
- LogRecord.Severity nullable: [sdk-logs] Update LogRecord for Logger API additions #4456 (comment)
- Discuss obsoletions:
OpenTelemetryLoggerOptions.AddProcessor
&OpenTelemetryLoggerOptions.SetResourceBuilder
- InMemoryExporter, ConsoleExporter, & OtlpExporter
OpenTelemetryLoggerOptions
registration extensions
- Remove added
InternalsVisibleTo
- OpenTelemetry.Api: [api-logs] Expose logging artifacts as public #4552
- OpenTelemetry.Api.ProviderBuilderExtensions: [di-logs] Expose logging implementation as public #4558
- OpenTelemetry: [sdk-logs] Expose logging SDK implementation as public #4568
- Documentation updates
- Example updates
- Public API review
Relates to #4014