This file contains individual changes for the OpenTelemetry.Exporter.OpenTelemetryProtocol package. For highlights and announcements covering all components see: Release Notes.
- Fixed a bug in .NET Framework gRPC export client where the default success export response was incorrectly marked as false, now changed to true, ensuring exports are correctly marked as successful. (#6099)
Released 2025-Jan-22
- Fixed an issue where the OTLP gRPC exporter did not export logs, metrics, or traces in .NET Framework projects. (#6083)
Released 2025-Jan-15
Released 2024-Dec-11
-
Removed the following package references:
Google.ProtobufGrpcGrpc.Net.Client
These changes were made to streamline dependencies and reduce the footprint of the exporter. (#6005)
-
Switched from using the
Google.Protobuflibrary for serialization to a custom manual implementation of protobuf serialization. (#6005) -
Fixed an issue where a
service.namewas added to the resource if it was missing. The exporter now respects the resource data provided by the SDK without modifications. (#6015) -
Removed the peer service resolver, which was based on earlier experimental semantic conventions that are not part of the stable specification. This change ensures that the exporter no longer modifies or assumes the value of peer service attributes, aligning it more closely with OpenTelemetry protocol specifications. (#6005)
Released 2024-Nov-12
Released 2024-Nov-01
- Added support for exporting instrumentation scope attributes from
ActivitySource.Tags. (#5897)
Released 2024-Sep-30
-
Breaking change: Non-primitive attribute (logs) and tag (traces) values converted using
Convert.ToStringwill now format usingCultureInfo.InvariantCulture. (#5700) -
Fixed an issue causing
NotSupportedExceptions to be thrown on startup whenAddOtlpExporterregistration extensions are called while using custom dependency injection containers which automatically create services (Unity, Grace, etc.). (#5808)- Fixed
PlatformNotSupportedExceptions being thrown during export when running on mobile platforms which caused telemetry to be dropped silently. (#5821)
- Fixed
Released 2024-Jun-14
Released 2024-Jun-07
- The experimental APIs previously covered by
OTEL1000(LoggerProviderBuilder.AddOtlpExporterextension) are now part of the public API and supported in stable builds. (#5648)
Released 2024-May-20
-
User-Agentheader format changed fromOTel-OTLP-Exporter-Dotnet/{NuGet Package Version}+{Commit Hash}toOTel-OTLP-Exporter-Dotnet/{NuGet Package Version}. (#5528) -
Implementation of OTLP specification for propagating
SpanandSpanLinkflags containing W3C trace flags andparent_is_remoteinformation. (#5563) -
Introduced experimental support for automatically retrying export to the otlp endpoint by storing the telemetry offline during transient network errors. Users can enable this feature by setting the
OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRYenvironment variable todisk. The default path where the telemetry is stored is obtained by calling Path.GetTempPath() or can be customized by settingOTEL_DOTNET_EXPERIMENTAL_OTLP_DISK_RETRY_DIRECTORY_PATHenvironment variable. (#5527)
Released 2024-Apr-17
- Fix native AoT warnings in
OpenTelemetry.Exporter.OpenTelemetryProtocol. (#5520)
Released 2024-Apr-02
-
OtlpExporterwill no longer throw an exception (even on .NET Core 3.1) when theSystem.Net.Http.SocketsHttpHandler.Http2UnencryptedSupportAppContextswitch is NOT set AND usingOtlpExportProtocol.Grpcto send to an insecure ("http") endpoint.System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupportis not required to be set when using .NET 5 or newer. (#5486) -
Replaced environment variable
OTEL_DOTNET_EXPERIMENTAL_OTLP_ENABLE_INMEMORY_RETRYwithOTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY.OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRYwhen set toin_memorywill enable automatic retries in case of transient failures during data export to an OTLP endpoint. (#5495)
Released 2024-Mar-27
Released 2024-Mar-14
-
Experimental (pre-release builds only): Added
LoggerProviderBuilder.AddOtlpExporterregistration extensions. #5103 -
Removed the
OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTESenvironment variable, following the stabilization of the exception attributesexception.type,exception.message, andexception.stacktracein the OpenTelemetry Semantic Conventions. These attributes, corresponding toLogRecord.Exception, are now stable and will be automatically included in exports. (#5258) -
Updated
OtlpLogExporterto setbodyon the data model fromLogRecord.Bodyif{OriginalFormat}attribute is NOT found andFormattedMessageisnull. This is typically the case when using the experimental Logs Bridge API. (#5268) -
Updated
OtlpLogExporterto set instrumentation scope name on the data model fromLogRecord.Logger.NameifLogRecord.CategoryNameisnull. This is typically the case when using the experimental Logs Bridge API. (#5300) -
URL encoded values in
OTEL_EXPORTER_OTLP_HEADERSare now correctly decoded as it is mandated by the specification. (#5316) -
Experimental (pre-release builds only): Add support in
OtlpMetricExporterfor emitting exemplars supplied on Counters, Gauges, and ExponentialHistograms. (#5397) -
Setting
EndpointorHttpClientFactoryproperties onOtlpExporterOptionstonullwill now result in anArgumentNullExceptionbeing thrown. (#5434) -
Introduced experimental support for automatically retrying export to the otlp endpoint when transient network errors occur. Users can enable this feature by setting
OTEL_DOTNET_EXPERIMENTAL_OTLP_ENABLE_INMEMORY_RETRYenvironment variable to true. (#5435) -
Added
IOpenTelemetryBuilder.UseOtlpExporterextension to simplify setup of the OTLP Exporter when all three signals are used (logs, metrics, and traces). The new extension has the following behaviors:-
Calling
UseOtlpExporterwill automatically enable logging, tracing, and metrics. Additional calls toWithLogging,WithMetrics, andWithTracingare NOT required however for metrics and tracing sources/meters still need to be enabled. -
UseOtlpExportercan only be called once and cannot be used with the existingAddOtlpExporterextensions. Extra calls will result inNotSupportedExceptions being thrown. -
UseOtlpExporterwill register the OTLP Exporter at the end of the processor pipeline for logging and tracing. -
The OTLP Exporters added for logging, tracing, and metrics can be configured using environment variables or
IConfiguration.
For details see: README > Enable OTLP Exporter for all signals.
PR: #5400
-
Released 2023-Dec-08
Released 2023-Nov-29
-
Made
OpenTelemetry.Exporter.OtlpLogExporterpublic. (#4979) -
Updated the
OpenTelemetryLoggerOptions.AddOtlpExporterextension to retrieveOtlpExporterOptionsandLogRecordExportProcessorOptionsusing theIServiceProvider/ Options API so that they can be controlled viaIConfiguration(similar to metrics and traces). (#4916) -
Added an
OpenTelemetryLoggerOptions.AddOtlpExporterextension overload which accepts anameparameter to support named options. (#4916) -
Add support for Instrumentation Scope Attributes (i.e Meter Tags), fixing issue #4563. (#5089)
Released 2023-Oct-16
-
Bumped the version of
Google.Protobufused by the project to3.22.5so that consuming applications can be published as NativeAOT successfully. Also, a new performance feature can be used instead of reflection emit, which is not AOT-compatible. Removed the dependency onSystem.Reflection.Emit.Lightweight. (#4859) -
Added support for
OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMITandOTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT. (#4887) -
Added ability to export attributes corresponding to
LogRecord.Exceptioni.e.exception.type,exception.messageandexception.stacktrace. These attributes will be exported whenOTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTESenvironment variable will be set totrue.NOTE: These attributes were removed in 1.6.0-rc.1 release in order to support stable release of OTLP Log Exporter. The attributes will now be available via environment variable mentioned above. (#4892)
-
Added ability to export attributes corresponding to
LogRecord.EventId.Idaslogrecord.event.idandLogRecord.EventId.Nameaslogrecord.event.name. The attributes will be exported whenOTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTESwill be set totrue.NOTE: These attributes were removed in 1.6.0-rc.1 release in order to support stable release of OTLP Log Exporter. The attributes will now be available via environment variable mentioned above. (#4925)
-
LogRecord.CategoryNamewill now be exported as InstrumentationScopenamefield under ScopeLogs. (#4941)
Released 2023-Sep-05
Released 2023-Aug-21
-
Breaking change: Excluded attributes corresponding to
LogRecord.Exception,LogRecord.EventIdandLogRecord.CategoryNamefrom the exported data. See following details for reasoning behind removing each individual property:LogRecord.Exception: The semantic conventions for attributes corresponding to exception data are not yet stable. Track issue #4831 for details.LogRecord.EventId: The attributes corresponding to this property are specific to .NET logging data model and there is no established convention defined for them yet. Track issue #4776 for details.LogRecord.CategoryName: The attribute corresponding to this property is specific to .NET logging data model and there is no established convention defined for it yet. Track issue #3491 for details.
This change is temporarily done in order to release stable version of OTLP Log Exporter. (#4781)
-
Added extension method for configuring export processor options for otlp log exporter. (#4733)
-
Added support for configuring the metric exporter's temporality using the environment variable
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCEas defined in the specification. (#4667)
Released 2023-Jul-12
-
Merged
OpenTelemetry.Exporter.OpenTelemetryProtocol.Logspackage intoOpenTelemetry.Exporter.OpenTelemetryProtocol. Going Forward,OpenTelemetry.Exporter.OpenTelemetryProtocolwill be the only package needed for all 3 signals (Logs, Metrics, and Traces). All the changes made inOpenTelemetry.Exporter.OpenTelemetryProtocol.Logsare now included in this package. (#4556) -
Updated Grpc.Net.Client to
2.45.0to fix unobserved exception from failed calls. (#4573) -
Updated Grpc.Net.Client to
2.52.0to address the vulnerability reported by CVE-2023-32731. Refer to grpc/grpc#32309 for more details. (#4647) -
Experimental (pre-release builds only):
Released 2023-Jun-26
Released 2023-Jun-05
- Remove support for exporting
Exemplars. This would be added back in the1.6.*prerelease versions right after1.5.0stable version is released. (#4533)
Released 2023-May-25
- Revert version of
Google.Protobufto3.19.4(see #4201). This also reintroduces theSystem.Reflection.Emit.Lightweightdependency. (#4407)
Released 2023-Mar-31
-
Add support for exporting histograms aggregated using the Base2 Exponential Bucket Histogram Aggregation. (#4337)
-
Added support to set
TraceStatewhen converting the System.Diagnostics.Activity object to its corresponding OpenTelemetry.Proto.Trace.V1.Span object. (#4331)
Released 2023-Mar-07
-
Bumped the version of
Google.Protobufused by the project to3.22.0so that a new performance feature can be used instead of reflection. Removed the dependency onSystem.Reflection.Emit.Lightweight. (#4201) -
Added Exemplar support. See exemplars for instructions to enable exemplars.
Released 2023-Feb-24
-
Updated OTel SDK dependency to 1.4.0
-
AddOtlpExporterextension methods will now always create a new options instance when named options are NOT used. (#4200)
Released 2023-Feb-10
- Added a direct dependency on System.Reflection.Emit.Lightweight which previously came transitively through the OpenTelemetry SDK. (#4140)
Released 2023-Feb-01
- Include User-Agent header per the specification. (#4120)
Released 2023-Jan-09
- For
AddOtlpExporterextension methods, configuration delegates will be executed inline and not through Options API when named options are NOT used. (#4058)
Released 2022-Dec-12
- Fix default values for
OTEL_ATTRIBUTE_COUNT_LIMIT,OTEL_ATTRIBUTE_COUNT_LIMIT,OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,OTEL_SPAN_EVENT_COUNT_LIMIT,OTEL_SPAN_LINK_COUNT_LIMIT,OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT,OTEL_LINK_ATTRIBUTE_COUNT_LIMIT. All of them are defaulted to128. (#3978)
Released 2022-Nov-07
- Log Exporter modified to no longer prefix scope-depth when exporting ILogger scopes as attributes. Empty keys and {OriginalFormat} key will be ignored from scopes. (#3843)
Released 2022-Oct-17
-
OTLP histogram data points will now include
MinandMaxvalues when they are present. (#2735) -
Adds support for limiting the length and count of attributes exported from the OTLP log exporter. These Attribute Limits are configured via the environment variables defined in the specification. (#3684)
-
Added support for loading environment variables from
IConfigurationwhen using theAddOtlpExporterextensions (#3760)
Released 2022-Sep-29
-
Added overloads which accept a name to the
MeterProviderBuilderAddOtlpExporterextension to allow for more fine-grained options management (#3648) -
Added overloads which accept a name to the
TracerProviderBuilderAddOtlpExporterextension to allow for more fine-grained options management (#3653)
Released 2022-Aug-18
- When using Attribute Limits the OTLP exporter will now send "dropped" counts where applicable (ex: dropped_attributes_count). (#3580)
Released 2022-Aug-02
-
Adds support for limiting the length and count of attributes exported from the OTLP exporter. These Attribute Limits are configured via the environment variables defined in the specification. (#3376)
-
The
MetricReaderOptionsdefaults can be overridden usingOTEL_METRIC_EXPORT_INTERVALandOTEL_METRIC_EXPORT_TIMEOUTenvironmental variables as defined in the specification. (#3424)
Released 2022-Jun-03
Released 2022-June-1
Released 2022-May-16
-
LogExporter to support Logging Scopes. (#3218)
-
Support
HttpProtobufprotocol with logs & addedHttpClientFactoryoption (#3225) -
Removes net5.0 target and replaced with net6.0 as .NET 5.0 is going out of support. The package keeps netstandard2.1 target, so it can still be used with .NET5.0 apps. (#3147)
-
Fix handling of array-valued attributes for the OTLP trace exporter. (#3238)
-
Improve the conversion and formatting of attribute values to the OTLP format. The list of data types that must be supported per the OpenTelemetry specification is more narrow than what the .NET OpenTelemetry SDK supports. Numeric built-in value types are supported by converting to a
longordoubleas appropriate except for numeric types that could cause overflow (ulong) or rounding (decimal) which are converted to strings. Non-numeric built-in types -string,char,boolare supported. All other types are converted to astring. Array values are also supported. (#3262) (#3274)
Released 2022-Apr-15
- Removes .NET Framework 4.6.1. The minimum .NET Framework version supported is .NET 4.6.2. (#3190)
Released 2022-Apr-15
-
LogExporter to correctly map Severity to OTLP. (#3177)
-
LogExporter to special case {OriginalFormat} to populate Body. (#3182)
Released 2022-Apr-12
- Updated underlying proto files to v0.16.0. The LogRecord.Name field was removed. The CategoryName provided when calling CreateLogger previously populated this field. For now, CategoryName is no longer exported via OTLP. It will be reintroduced in the future as an attribute.
Released 2022-Mar-30
-
Added support for Activity Status and StatusDescription which were added to Activity from
System.Diagnostics.DiagnosticSourceversion 6.0. Prior to version 6.0, setting the status of an Activity was provided by the .NET OpenTelemetry API via theActivity.SetStatusextension method in theOpenTelemetry.Tracenamespace. Internally, this extension method added the status as tags on the Activity:otel.status_codeandotel.status_description. Therefore, to maintain backward compatibility, the exporter falls back to using these tags to infer status. (#3100) -
Fixed OTLP metric exporter to default to a periodic 60 second export cycle. A bug was introduced in #2717 that caused the OTLP metric export to default to a manual export cycle (i.e., requiring an explicit flush). A workaround for this bug has been provided here. (#2982)
-
Bumped minimum required gRPC version (2.23.0 to 2.44.0). Fixes issues building on Apple Silicon (M1). (#2963)
-
Fixed issue where the configuration of an OTLP exporter could be changed after instantiation by altering the original
OtlpExporterOptionsprovided. (#3066) -
TraceExporter to stop populating
DeprecatedCodein OTLP Status.
Released 2022-Mar-04
-
LogExporter bug fix to handle null EventName. (#2871)
-
Fixed the default endpoint for OTLP exporter over HTTP/Protobuf. The default value is
http://localhost:4318. (#2868) -
Removes metric related configuration options from
OtlpExporterOptions.MetricReaderType,PeriodicExporterMetricReaderOptions, andTemporalityare now configurable via theMetricReaderOptions. (#2717) -
Exporter bug fix to not throw exceptions from Export method. (#2915)
-
OTLP LogExporter modified to not drop the whole batch if a single log from the batch is invalid. (#2934)
Released 2022-Feb-02
-
Added validation that insecure channel is configured correctly when using .NET Core 3.x for gRPC-based exporting. (#2691)
-
Changed
OtlpLogExporterto convertILoggerstructured log inputs toAttributesin OpenTelemetry (only active whenParseStateValuesistrueonOpenTelemetryLoggerOptions)
Released 2021-Nov-29
-
Added configuration options for
MetricReaderTypeto allow for configuring theOtlpMetricExporterto export either manually or periodically. (#2674) -
The internal log message used when OTLP export client connection failure occurs, will now include the endpoint uri as well. (#2686)
-
Support
HttpProtobufprotocol with metrics & addedHttpClientFactoryoption (#2696)
Released 2021-Nov-19
-
Changed
OtlpExporterOptionsconstructor to throwFormatExceptionif it fails to parse any of the supported environment variables. -
Changed
OtlpExporterOptions.MetricExportIntervalMillisecondsto default 60000 milliseconds. (#2641)
Released 2021-Oct-08
MeterProviderBuilderextension methods now supportOtlpExporterOptionsbound toIConfigurationwhen using OpenTelemetry.Extensions.Hosting (#2413)- Extended
OtlpExporterOptionsbyProtocolproperty. The property can be overridden byOTEL_EXPORTER_OTLP_PROTOCOLenvironmental variable (grpc or http/protobuf). Implemented OTLP over HTTP binary protobuf trace exporter. (#2292)
Released 2021-Sep-23
Released 2021-Sep-13
OtlpExporterOptions.BatchExportProcessorOptionsis initialized withBatchExportActivityProcessorOptionswhich supports field value overriding usingOTEL_BSP_SCHEDULE_DELAY,OTEL_BSP_EXPORT_TIMEOUT,OTEL_BSP_MAX_QUEUE_SIZE,OTEL_BSP_MAX_EXPORT_BATCH_SIZEenvironmental variables as defined in the specification. (#2219)
Released 2021-Aug-24
-
The
OtlpExporterOptionsdefaults can be overridden usingOTEL_EXPORTER_OTLP_ENDPOINT,OTEL_EXPORTER_OTLP_HEADERSandOTEL_EXPORTER_OTLP_TIMEOUTenvironmental variables as defined in the specification. (#2188) -
Changed default temporality for Metrics to be cumulative.
Released 2021-Jul-23
-
Removes .NET Framework 4.5.2, .NET 4.6 support. The minimum .NET Framework version supported is .NET 4.6.1. (#2138)
-
Add Metrics support.(#2174)
Released 2021-Jul-12
Released 2021-Jun-25
Released 2021-Jun-09
Released 2021-May-11
Released 2021-Apr-23
-
Resolves
System.TypeInitializationExceptionexception when using the exporter with an application that references Google.Protobuf 3.15. The OTLP exporter now depends on Google.Protobuf 3.15.5 enabling the use of the newUnsafeByteOperations.UnsafeWrapto avoid unnecessary allocations. (#1873) -
Null values in string arrays are preserved according to spec. (#1919 #1945)
-
When using OpenTelemetry.Extensions.Hosting you can now bind
OtlpExporterOptionstoIConfigurationusing theConfigureextension (ex:services.Configure<OtlpExporterOptions>(this.Configuration.GetSection("Otlp"));). (#1942)
Released 2021-Mar-19
Released 2021-Feb-10
Released 2021-Feb-09
- Add back support for secure gRPC connections over https. (#1804)
Released 2021-Feb-04
- Moved
OtlpTraceExporterandOtlpExporterOptionsclasses toOpenTelemetry.Exporternamespace. (#1770) - Changed default port for OTLP Exporter from 55680 to 4317
- Default ServiceName, if not found in Resource, is obtained from SDK using GetDefaultResource().
- Modified the data type of Headers option to string; Added a new option called
TimeoutMilliseconds for computing the
deadlineto be used by gRPC client forExport(#1781) - Removes Grpc specific options from OTLPExporterOptions, which removes support for secure connections. See 1778 for details.
- Endpoint is made Uri for all target frameworks.
Released 2021-Jan-29
-
Changed
OtlpTraceExporterclass and constructor from internal to public. (#1612) -
In
OtlpExporterOptions.cs: Exporter options now include a switch for Batch vs Simple exporter, and settings for batch exporting properties. -
Introduce a
netstandard2.1build enabling the exporter to use the gRPC for .NET library instead of the gRPC for C# library for .NET Core 3.0+ applications. This required some breaking changes to theOtlpExporterOptions. (#1662)
Released 2020-Nov-17
- Code generated from proto files has been marked internal. This includes
everything under the
OpenTelemetry.Protonamespace. (#1524) - The
OtlpExporterclass has been made internal. (#1528) - Removed
ServiceNamefrom options available on theAddOtlpExporterextension. It is not required by the specification. (#1557)
Released 2020-Nov-5
peer.servicetag is now added to outgoing spans (went not already specified) following the Zipkin remote endpoint rules (#1392)- Added
ServiceNameto options available on theAddOtlpExporterextension (#1420)
Released 2020-Oct-16
Released 2020-Sep-15
Released 2020-08-28
- Allow configurable gRPC channel options (#1033)
- Renamed extension method from
UseOtlpExportertoAddOtlpExporter(#1066) - Changed
OtlpExporterto useBatchExportActivityProcessorby default (#1104)
Released 2020-07-24
- First beta release
Released 2020-07-23
- Initial release