NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2226 most downloaded on crates.io
An OpenTelemetry log appender for the tracing crate
Last release 20 days ago
18 Sep 2026
Release timing varies
gaps range from 2 weeks to 8 months
Nearly every release is documented
notes for 18 of 18 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
18 releases · first in 2023
opentelemetry-appender-tracing 0.33.0 release.
opentelemetry-appender-tracing 0.33.0 release.
See the 0.33.0 release notes and migration guidance.
The OTLP exporters for Logs and Metrics remain release candidates. We plan to declare them stable in 0.33.1 after approximately two weeks of validation, provided no issues requiring breaking API changes arise. The Logs and Metrics API and SDK remain stable; Distributed Tracing remains pre-stable.
First release of opentelemetry-propagator-b3, providing B3 trace context propagation for OpenTelemetry Rust.
Based on the B3 implementation in opentelemetry-zipkin, with the existing API and behavior. B3 users can migrate their dependency and imports to opentelemetry_propagator_b3::{B3Encoding, Propagator}.
One column per quarter.
Released 2026-Sep-18
OpenTelemetryTracingBridge::builder_with_scope_attributes(..).
3415"opentelemetry-appender-tracing 0.32.0 release."
"opentelemetry-appender-tracing 0.32.0 release."
Released 2026-May-08
Add tracing span attribute enrichment (experimental). When enabled,
attributes attached to active tracing spans are copied onto each emitted
log record. "Span" here refers to a tracing::span! from the
tracing crate (the appender's source), not an OpenTelemetry span.
#3482, #3505
Gated behind the new experimental_span_attributes cargo feature. As
with all experimental_* features in this repo, the API may change without
a major version bump until it is stabilized; once stable, the feature flag
will be removed.
Enrichment is disabled by default (no per-span overhead) and must be
opted into at runtime via a single builder method that accepts a
[TracingSpanAttributes] value:
use opentelemetry_appender_tracing::layer::TracingSpanAttributes;
// Copy all tracing-span attributes onto log records:
let layer = OpenTelemetryTracingBridge::builder(&provider)
.with_tracing_span_attributes(TracingSpanAttributes::all())
.build();
// Or copy only an allowlist of attributes:
let layer = OpenTelemetryTracingBridge::builder(&provider)
.with_tracing_span_attributes(TracingSpanAttributes::allowlist(["session.id"]))
.build();
Remove the experimental_use_tracing_span_context since
tracing-opentelemetry now supports activating the OpenTelemetry
context for the current tracing span. This fixes #3190 — the
circular dependency introduced by depending on tracing-opentelemetry
that depends on opentelemetry.
"spec_unstable_logs_enabled" feature flag is removed. The capability (and the backing specification) is now stable and is enabled by default. #3278
Bump tracing-opentelemetry to 0.32
Released 2025-Oct-1
tracing-opentelemetry to 0.32Updated opentelemetry dependency to version 0.31.0.
Released 2025-Sep-25
opentelemetry dependency to version 0.31.0.Bump tracing-opentelemetry to 0.31
Released 2025-June-05
tracing-opentelemetry to 0.31Updated opentelemetry dependency to version 0.30.0.
Released 2025-May-23
opentelemetry dependency to version 0.30.0.Bump tracing-opentelemetry to 0.30
Released 2025-Mar-24
tracing-opentelemetry to 0.30Fixes 1682. "spec_unstable_logs_enabled" feature now do not suppress logs for other layers.
Released 2025-Mar-21
Fixes 1682. "spec_unstable_logs_enabled" feature now do not suppress logs for other layers.
The special treatment of the "message" field has been extended when recording string values. With this change, when a log is emitted with a field named "message" (and string value), its value is directly assigned to the LogRecord’s body rather than being stored as an attribute named "message". This offers a slight performance improvement over previous.
For example, the below will now produce LogRecord with the message value populated as LogRecord's body:
error!(name: "my-event-name", target: "my-system", event_id = 20, user_name = "otel", user_email = "otel@opentelemetry.io", message = "This is an example message");
Previously, Body was only populated when the below style was used.
error!(name: "my-event-name", target: "my-system", event_id = 20, user_name = "otel", user_email = "otel@opentelemetry.io", "This is an example message");
This style, while slightly slower, should still be used when the value is not a simple string, but require format arguments as in the below example.
error!(name: "my-event-name", target: "my-system", event_id = 20, user_name = "otel", user_email = "otel@opentelemetry.io", "This is an example message with format arguments {} and {}", "foo", "bar");
Fixes 2658
InstrumentationScope(Logger) used by the appender now uses an empty ("") named
Logger. Previously, a Logger with name and version of the crate was used.
Receivers (processors, exporters) are expected to use LogRecord.target() as
scope name. This is already done in OTLP Exporters, so this change should be
transparent to most users.
Passes event name to the event_enabled method on the Logger. This allows
implementations (SDK, processor, exporters) to leverage this additional
information to determine if an event is enabled.
u64, i128, u128 and usize values are stored as opentelemetry::logs::AnyValue::Int
when conversion is feasible. Otherwise stored as
opentelemetry::logs::AnyValue::String. This avoids unnecessary string
allocation when values can be represented in their original types.
Byte arrays are stored as opentelemetry::logs::AnyValue::Bytes instead
of string.
Error fields are reported using attribute named "exception.message". For
example, the below will now report an attribute named "exception.message",
instead of previously reporting the user provided attribute "error".
error!(....error = &OTelSdkError::AlreadyShutdown as &dyn std::error::Error...)
perf - small perf improvement by avoiding string allocation of target
Update opentelemetry dependency version to 0.29.
New _experimental_ feature to use trace_id & span_id from spans created through the tracing crate (experimental_use_tracing_span_context) #2438
Update opentelemetry dependency version to 0.28.
Released 2025-Feb-10
opentelemetry dependency version to 0.28.Released 2025-Feb-10
Update opentelemetry dependency version to 0.27
Update opentelemetry dependency version to 0.26
Released 2024-Sep-30
opentelemetry dependency version to 0.26log events emitted via the tracing pipeline using the log-tracing crate no longer include the target metadata as attributes. Exporters or backends that rely on this attribute should now access the target directly from the LogRecord::target field.Released 2024-Sep-30
semconv_experimental to enable experimental semantic conventions.
This feature is disabled by default.Update opentelemetry dependency version to 0.25
opentelemetry dependency version to 0.25opentelemetry crate
on major,minor versions.&'static str for SeverityText.1869 Utilize the LogRecord::set_target() method to pass the tracing target to the SDK. Exporters might use the target to override the instrumentation
1869 Utilize the LogRecord::set_target() method to pass the tracing target to the SDK.
Exporters might use the target to override the instrumentation scope, which previously contained "opentelemetry-appender-tracing".
Breaking 1928 Insert tracing event name into LogRecord::event_name instead of attributes.
Update opentelemetry dependency version to 0.24
from_env and use environment variables to initialize the configurations by default #459Removed unwanted dependency on opentelemetry-sdk.
opentelemetry dependency version to 0.23New experimental metadata attributes feature (experimental_metadata_attributes) #1380
Add log appender versions to loggers
Initial crate release
Initial crate release
Your coding agent can read these notes before it upgrades. Set up the MCP server →