NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #173 most downloaded on crates.io
Utilities for implementing and composing `tracing` subscribers.
Last release 6 months ago
13 Mar 2026
Release timing varies
gaps range from 8 days to 13 months
Nearly every release is documented
notes for 53 of 54 stable releases
5 versions withdrawn
withdrawn after publishing
7 years old
67 releases · first in 2019
Allow ansi sanitization to be disabled
The previous release 0.3.21 was yanked as it depended explicitly on tracing-0.1.42 , which was yanked due to a breaking change (see #3424 for details)…
The previous release 0.3.21 was yanked as it depended explicitly on
tracing-0.1.42, which was yanked due to a breaking change (see #3424 for
details). This release contains all the changes from the previous release, plus
an update to the newer version of tracing.
tracing: updated to 0.1.43 (#3427)One column per quarter.
Change registry exit to decrement local span ref only
on_register_dispatch (#3379)tracing: updated to 0.1.42 (#3418)clone_span on enter (#3289)[ [crates.io][crate-0.3.20] ] | [ [docs.rs][docs-0.3.20] ]
[ [crates.io][crate-0.3.19] ] | [ [docs.rs][docs-0.3.19] ]
This release of tracing-subscriber adds support for the [NO_COLOR] environment variable (an informal standard to disable emitting ANSI color escape co
This release of tracing-subscriber adds support for the NO_COLOR environment
variable (an informal standard to disable emitting ANSI color escape codes) in
fmt::Layer, reintroduces support for the chrono crate, and increases the
minimum supported Rust version (MSRV) to Rust 1.63.0.
It also introduces several minor API improvements.
chrono implementations of FormatTime (#2690)NO_COLOR environment variable in
fmt::Layer (#2647)format::Writer::new() public (#2680)layer::Filter for Option<Filter> (#2407)tracing-log to 0.2 (#2772)Thanks to @shayne-fletcher, @dmlary, @kaifastromai, and @jsgf for contributing!
This release of tracing-subscriber fixes a build error when using env-filter with recent versions of the regex crate. It also introduces several minor
This release of tracing-subscriber fixes a build error when using env-filter
with recent versions of the regex crate. It also introduces several minor API
improvements.
regex
dependency, fixing a build error with recent versions of regex (#2566)fmt::Display impl for filter::Targets (#2343)with_ansi(false) no longer require the "ansi" feature, so that
ANSI formatting escapes can be disabled without requiring ANSI-specific
dependencies (#2532)Compact formatter, matching the default
formatter (#2409)Thanks to @keepsimple1, @andrewhalle, @LeoniePhiline, @LukeMathWalker, @howardjohn, @daxpedda, and @dbidwell94 for contributing to this release!
This release of tracing-subscriber fixes a regression introduced in [v0.3.15][subscriber-0.3.15] where Option::None's Layer implementation would set t
This release of tracing-subscriber fixes a regression introduced in
v0.3.15 where Option::None's Layer implementation would
set the max level hint to OFF. In addition, it adds several new APIs,
including the Filter::event_enabled method for filtering events based on
fields values, and the ability to log internal errors that occur when writing a
log line.
This release also replaces the dependency on the unmaintained [ansi-term]
crate with the [nu-ansi-term] crate, resolving an informational security
advisory (RUSTSEC-2021-0139) for [ansi-term]'s maintainance status. This
increases the minimum supported Rust version (MSRV) to Rust 1.50+, although the
crate should still compile for the previous MSRV of Rust 1.49+ when the ansi
feature is not enabled.
Option::None's Layer impl always setting the max_level_hint
to LevelFilter::OFF (#2321)-Z minimal versions (#2246)tracing-subscriber (#2285)stderr if writing a log line fails (#2102)FmtLayer::log_internal_errors and
FmtSubscriber::log_internal_errors methods for configuring whether internal
writer errors are printed to stderr (#2102)#[must_use] attributes on builders to warn if a Subscriber is
configured but not set as the default subscriber (#2239)Filter::event_enabled method for filtering an event based on its
fields (#2245, #2251)Targets::default_level accessor ([#2242])ansi-term crate with
nu-ansi-term ((#2287, fixes informational advisory RUSTSEC-2021-0139)tracing-core: updated to 0.1.30ansi) feature flag is enabled (#2287)fmt::init documentation (#2224)filter::Not combinator (#2249)Thanks to new contributors @cgbur, @DesmondWillowbrook, @RalfJung, and @poliorcetics, as well as returning contributors @CAD97, @connec, @jswrenn, @guswynn, and @bryangarza, for contributing to this release!
This release fixes a bug where the reload layer would fail to pass through max_level_hint to the underlying layer, potentially breaking filtering.
This release fixes a bug where the reload layer would fail to pass through
max_level_hint to the underlying layer, potentially breaking filtering.
max_level_hint to the inner Layer (#2204)Thanks to @guswynn for contributing to this release!
This release fixes multiple filtering bugs in the Layer implementations for Option and Vec .
This release fixes multiple filtering bugs in the Layer implementations for
Option<impl Layer> and Vec<impl Layer>.
Layer::event_enabled implementation for Option<impl Layer<S>>
returning false when the Option is None, disabling all events globally
(#2193)Layer::max_level_hint implementation for Option<impl Layer<S>>
incorrectly disabling max level filtering when the option is None (#2195)Layer::max_level_hint implementation for Vec<impl Layer<S>>
returning LevelFilter::ERROR rather than LevelFilter::OFF when the Vec
is empty (#2195)Thanks to @CAD97 and @guswynn for contributing to this release!
This release of tracing-subscriber fixes a compilation failure due to an incorrect tracing-core dependency that was introduced in v0.3.12.
This release of tracing-subscriber fixes a compilation failure due to an
incorrect tracing-core dependency that was introduced in v0.3.12.
This release of tracing-subscriber adds a new Layer::event_enabled method, which allows Layers to filter events *after* their field values are recorde
This release of tracing-subscriber adds a new Layer::event_enabled method,
which allows Layers to filter events after their field values are recorded;
a Filter implementation for reload::Layer, to make using reload with
per-layer filtering more ergonomic, and additional inherent method downcasting
APIs for the Layered type. In addition, it includes dependency updates, and
minor fixes for documentation and feature flagging.
Layer::event_enabled method, which can be implemented to filter
events based on their field values (#2008)Filter implementation for reload::Layer (#2159)Layered::downcast_ref and Layered::is inherent methods
(#2160)parking_lot to 0.13.0 (#2143)lazy_static dependency with once_cell ([#2147])tracing-core features by default (#2107)Thanks to @ben0x539, @jamesmunns, @georgemp, @james7132, @jswrenn, @CAD97, and @guswynn for contributing to this release!
This is a bugfix release for the Filter implementation for EnvFilter added in [v0.3.10].
This is a bugfix release for the Filter implementation for EnvFilter added
in v0.3.10.
Filter::on_record callback to EnvFilter's
Filter impl (#2058)EnvFilter
methods with both the Filter and Layer traits in scope (#2057)EnvFilter::builder().parse() and other parsing methods
returning an error when parsing an empty string (#2052)Thanks to new contributor @Ma124 for contributing to this release!
This release adds several new features, including a Filter implementation and new builder API for EnvFilter, support for using a Vec where L: Layer as
This release adds several new features, including a Filter implementation and
new builder API for EnvFilter, support for using a Vec<L> where L: Layer as
a Layer, and a number of smaller API improvements to make working with dynamic
and reloadable layers easier.
Filter for EnvFilter, allowing it to be used with
per-layer filtering (#1983)Filter::on_new_span, Filter::on_enter,
Filter::on_exit, Filter::on_close and Filter::on_record callbacks to
allow Filters to track span states internally (#1973, #2017, #2031)Filtered::filter and Filtered::filter_mut accessors
(#1959)Filtered::inner and Filtered::inner_mut accessors to borrow
the wrapped Layer (#2034)Layer for Vec<L: Layer>, to allow composing together
a dynamically sized list of Layers (#2027)Layer::boxed method to make type-erasing Layers easier
(#2026)fmt::Layer::writer and fmt::Layer::writer_mut accessors (#2034)fmt::Layer::set_ansi method to allow changing the ANSI formatting
configuration at runtime (#2034)EnvFilter::builder to configure a new EnvFilter prior to
parsing it (#2035)fmt::Layer's auto traits no longer depend on the Subscriber type
parameter's auto traits (#2025)ansi feature is disabled
(#2029)Thanks to new contributors @TimoFreiberg and @wagenet, as well as @CAD97 for contributing to this release!
This release updates the minimum supported Rust version (MSRV) to 1.49.0, and updates the (optional) dependency on parking_lot to v0.12.
This release adds *experimental* support for recording structured field values using the [valuable] crate to the format::Json formatter. In particular
This release adds experimental support for recording structured field
values using the valuable crate to the format::Json formatter. In
particular, user-defined types which are recorded using their
valuable::Valuable implementations will be serialized as JSON objects,
rather than using their fmt::Debug representation. See this blog post
for details on valuable.
Note that valuable support currently requires --cfg tracing_unstable. See
the documentation for details.
Additionally, this release includes a number of other smaller API improvements.
valuable values as structured
JSON (#1862, #1901)Targets::would_enable method for testing if a Targets filter
would enable a given target (#1903)map_event_format, map_fmt_fields, and map_writer methods to
fmt::Layer and fmt::SubscriberBuilder (#1871)tracing-core: updated to 0.1.22smallvec minimal version to 1.2.0, to fix compilation errors with -Z minimal-versions (#1890)Thanks to @guswynn, @glts, and @lilyball for contributing to this release!
Note that previous versions of tracing-subscriber did not use any of the thread-local crate's APIs effected by the vulnerability. However, updating th…
This release adds combinators for combining filters.
Additionally, this release also updates the thread-local crate to v1.1.4,
fixing warnings for the security advisory RUSTSEC-2022-0006. Note that
previous versions of tracing-subscriber did not use any of the thread-local
crate's APIs effected by the vulnerability. However, updating the version fixes
warnings emitted by cargo audit and similar tools.
thread-local to v1.1.4 (#1858)Thanks to new contributor @matze for contributing to this release!
fmt: Deprecated Pretty::with_source_location, as it can now be replaced by the more general Format, SubscriberBuilder, and Layer methods ([#1773])
This release adds configuration options to tracing_subscriber::fmt to log
source code locations for events.
with_file and with_line_number
configuration methods to fmt::Format, fmt::SubscriberBuilder, and
fmt::Layer (#1773)Pretty
formatter (#1833)Pretty::with_source_location, as it can now be replaced
by the more general Format, SubscriberBuilder, and Layer methods
(#1773)Thanks to new contributor @renecouto for contributing to this release!
This release re-enables RUST_LOG filtering in tracing_subscriber::fmt's default initialization methods, and adds an OffsetLocalTime formatter for usin
This release re-enables RUST_LOG filtering in tracing_subscriber::fmt's
default initialization methods, and adds an OffsetLocalTime formatter for
using local timestamps with the time crate.
OffsetLocalTime formatter to fmt::time for formatting local
timestamps with a fixed offset (#1772)Targets filter to fmt::init() and fmt::try_init() when
the "env-filter" feature is disabled, so that RUST_LOG is still honored
(#1781)Thanks to @marienz and @ishitatsuyuki for contributing to this release!
This release contains bugfixes for the fmt module, as well as documentation improvements.
This release contains bugfixes for the fmt module, as well as documentation
improvements.
fmt not emitting log lines when timestamp formatting fails
(#1689)Pretty formatter
(#1778)Thanks to new contributors @Swatinem and @rukai for contributing to this release!
This release fixes a pair of regressions in tracing-subscriber's fmt module.
Use argv0 for syslog identifier
MakeWriter filtering not working with BoxMakeWriter
(#1694)Writer::has_ansi_escapes method to check if an output supports ANSI
terminal formatting escape codes (#1696)FmtContext::span_scope, FmtContext::event_scope, and
FmtContext::parent_span methods for accessing the current span and its scope
when formatting an event (#1728)This release fixes a few issues related to feature flagging.
This release fixes a few issues related to feature flagging.
This is a breaking release of tracing-subscriber. The primary breaking change in this release is the removal of the dependency on the [chrono crate],…
This is a breaking release of tracing-subscriber. The primary breaking change
in this release is the removal of the dependency on the chrono crate, due to
RUSTSEC-2020-0159. To replace chrono, support is added for formatting
timestamps using the time crate instead.
In addition, this release includes a number of other breaking API changes, such
as adding (limited) support for #![no_std] targets, removing previously
deprecated APIs, and more.
Layer::new_span to Layer::on_new_span (#1674)Layer impl for Arc<L: Layer<S>> and Arc<dyn Layer<S> + ...>
(#1649)chrono crate with the time crate for timestamp formatting, to
resolve RUSTSEC-2020-0159 (#1646)json and env-filter from default features. They must now be
enabled explictly (#1647). This means that RUST_LOG-based filters will not
work unless the env-filter feature is enabled.FormatEvent::format_event and FormatFields::format_fields
trait methods to take a Writer type, rather than a &mut dyn fmt::Write
trait object (#1661)MakeWriter trait by adding a lifetime parameter
(#781)Layer::new_span to Layer::on_new_span (#1674)FormatEvent::format_event and FormatFields::format_fields
trait methods to take a Writer type, rather than a &mut dyn fmt::Write
trait object (#1661)json and env-filter feature flags are no longer
enabled by default (#1647)CurrentSpan type (#1320)SpanRef::parents iterator, replaced by
SpanRef::scope in #1431 ([#1648)])Context::scope iterator, replaced by
Context::span_scope and Context::event_scope in #1431 and #1434
([#1648)])Layer impl for Arc<L: Layer<S>> and
Arc<dyn Layer<S> + ...>. These interfere with per-layer filtering. (#1649)LayerBuilder type (#1673)fmt::Layer::on_event (renamed to fmt::Layer::fmt_event)
(#1673)chrono feature flag and APIs for using the
chrono crate for timestamp formatting (#1646)LocalTime and UtcTime types for formatting timestamps
using the time crate (#1646)MakeWriter trait, allowing it to
return a borrowed writer. This enables implementations of MakeWriter for
types such as Mutex<T: io::Write> and std::fs::File. (#781)#![no_std] targets, by disabling the std feature
flag (#1660)Thanks to @Folyd and @nmathewson for contributing to this release!
SpanId and TraceId from u64 and u128&mut self requirements for Span APIThis release fixes an issue where a Layer implementation's custom downcast_raw implementation was lost when wrapping that layer with a per-layer filte
This release fixes an issue where a Layer implementation's custom
downcast_raw implementation was lost when wrapping that layer with a per-layer
filter.
Filtered::downcast_raw to wrapped Layer (#1619)Thanks to @bryanburgers for contributing to this release!
This release contains a number of bug fixes, including a fix for tracing-subscriber failing to compile on the minimum supported Rust version of 1.42.0
This release contains a number of bug fixes, including a fix for
tracing-subscriber failing to compile on the minimum supported Rust version of
1.42.0. It also adds IntoIterator implementations for the Targets type.
enabled state is cleared when a global
filter short-circuits filter evaluation (#1575)Layer::on_layer not being called for Boxed Layers,
which broke per-layer filtering (#1576)Targets::iter, returning an iterator over the set of
target-level pairs enabled by a Targets filter (#1574)IntoIterator implementations for Targets and &Targets
(#1574)Thanks to new contributor @connec for contributing to this release!
This release fixes a few bugs in the per-layer filtering API added in v0.2.21.
This release fixes a few bugs in the per-layer filtering API added in v0.2.21.
This fixes a regression where the filter::ParseError type was accidentally renamed.
This fixes a regression where the filter::ParseError type was accidentally
renamed.
filter::ParseError accidentally being renamed to
filter::DirectiveParseError (#1558)This release introduces the [Filter] trait, a new API for [per-layer filtering][plf]. This allows controlling which spans and events are recorded by v
This release introduces the Filter trait, a new API for per-layer
filtering. This allows controlling which spans and events are recorded by
various layers individually, rather than globally.
In addition, it adds a new Targets filter, which provides a lighter-weight
version of the filtering provided by EnvFilter, as well as other smaller API
improvements and fixes.
SpanRef::parent_id, which cannot properly support per-layer
filtering. Use .parent().map(SpanRef::id) instead. (#1523)Context methods that are provided when the Subscriber implements
LookupSpan no longer require the "registry" feature flag (#1525)fmt::Debug implementation for Layered no longer requires the S
type parameter to implement Debug (#1528)Filter trait, Filtered type, Layer::with_filter method,
and other APIs for per-layer filtering (#1523)FilterFn and DynFilterFn types that implement global (Layer)
and per-layer (Filter) filtering for closures and function pointers
(#1523)Targets filter, which implements a lighter-weight form of
EnvFilter-like filtering (#1550)Layer::on_layer callback, called when layering the Layer onto a
Subscriber (#1523)Layer implementations for Box<L> and Arc<L> where L: Layer
([#1536])Layer implementations for Box<dyn Layer<S> + Send + Sync + 'static>
and Arc<dyn Layer<S> + Send + Sync + 'static> ([#1536])Special thanks to new contributors @jsgf and @maxburke for contributing to this release!
fmt: Fixed fmt printing only the first source for errors with a chain of sources ([#1460])
fmt printing only the first source for errors with a chain
of sources (#1460)Pretty formatter
(#1498)Json formatter not honoring without_time and with_level
configurations (#1463)Thanks to new contributors @joshtriplett and @lerouxrgd, and returning contributor @teozkr, for contributing to this release!
registry: SpanRef::parents, SpanRef::from_root, and Context::scope iterators, which are replaced by new SpanRef::scope and Scope::from_root iterators
SpanRef::parents, SpanRef::from_root, and Context::scope
iterators, which are replaced by new SpanRef::scope and Scope::from_root
iterators (#1413)SpanRef::scope method, which returns a leaf-to-root Iterator
including the leaf span (#1413)Scope::from_root method, which reverses the scope iterator
to iterate root-to-leaf (#1413)Context::event_span method, which looks up the parent span of
an event (#1434)Context::event_scope method, returning a Scope iterator over
the span scope of an event (#1434)MakeWriter::make_writer_for method, which allows returning a
different writer based on a span or event's metadata (#1141)MakeWriterExt trait, with with_max_level, with_min_level,
with_filter, and, and or_else combinators (#1274)MakeWriter implementation for Arc<W> where &W: io::Write
(#1274)Thanks to @teozkr and @Folyd for contributing to this release!
Deprecated the CurrentSpan type, which is inefficient and largely superseded by the registry API ([#1321])
CurrentSpan type, which is inefficient and largely superseded
by the registry API (#1321){ and ] (#1368)Thanks to @Folyd, and new contributors @akinnane and @aym-v for contributing to this release!
fmt: Pretty formatter now honors with_ansi(false) to disable ANSI terminal formatting ([#1240])
Pretty formatter now honors with_ansi(false) to disable ANSI
terminal formatting (#1240)Pretty formatter (#1275)ChronoLocal time formatter
(#1103)FmtContext::current_span() method, returning the current span
(#1290)FmtSpan variants may now be combined using the | operator for
more granular control over what span events are generated (#1277)Thanks to new contributors @cratelyn, @dignati, and @zicklag, as well as @Folyd, @matklad, and @najamelan, for contributing to this release!
env-filter: Fixed directives where the level is in mixed case (such as Info) failing to parse ([#1126])
Info) failing to parse (#1126)fmt::Subscriber not providing a max-level hint (#1251)tracing-subscriber no longer enables tracing and tracing-core's default
features (#1144)chrono dependency to 0.4.16 (#1189)tracing-log dependency to 0.1.2Thanks to @salewski, @taiki-e, @davidpdrsn and @markdingram for contributing to this release!
fmt: Fixed wrong lifetime parameters on FormatFields impl for FmtContext ([#1082])
registry: Fixed Registry::new allocating an excessively large amount of memory, most of which would never be used ([#1064])
Registry::new allocating an excessively large amount of
memory, most of which would never be used (#1064)Updated tracing-core to 0.1.17 ([#992])
tracing-core to 0.1.17 (#992)EnvFilter that contains
directives that would enable a level disabled by the tracing crate's
static_max_level features (#1021)Thanks to @jyn514 and @bkchr for contributing to this release!
env-filter: Fixed a regression where Option lost its Into impl ([#966])
Option<Level> lost its
Into<LevelFilter> impl (#966)EnvFilter enabling spans that should not be enabled
when multiple subscribers are in use (#927)format::Json now outputs fields in a more readable order (#892)tracing-core dependency to 0.1.16BoxMakeWriter for erasing the type of a MakeWriter
implementation (#958)TestWriter MakeWriter implementation to support libtest
output capturing (#938)Layer impl for Option<T> where T: Layer (#910)From<Level> impl for Directive (#918)Thanks to @Pothulapati, @samrg472, @bryanburgers, @keetonian, and @SriRamanujam for contributing to this release!
env-filter: Incorrect max level hint when filters involving span field values are in use
regex dependency enables fewer unused feature flags (#899)Thanks to @bdonlan and @jeromegn for contributing to this release!
filter: LevelFilter is now a re-export of the tracing_core::LevelFilter type, it can now be used interchangeably with the versions in tracing and trac
LevelFilter is now a re-export of the
tracing_core::LevelFilter type, it can now be used interchangeably with the
versions in tracing and tracing-core (#853)LevelFilters
and Levels (#853)tracing-core dependency to 0.1.12 (#853)LevelFilter and EnvFilter now participate in tracing-core's
max level hinting, improving performance significantly in some use cases where
levels are disabled globally (#853)fmt: Fixed compilation failure on MSRV when the chrono feature is disabled
chrono feature is
disabled (#844)layer::Context are now also provided
by FmtContext (#834)fmt: When the chrono dependency is enabled, the SystemTime timestamp formatter now emits human-readable timestamps rather than using SystemTime's fmt:
chrono dependency is enabled, the SystemTime timestamp
formatter now emits human-readable timestamps rather than using SystemTime's
fmt::Debugimplementation (chrono is still required for customized
timestamp formatting) (#807)ansi_term dependency to 0.12 (#816)with_span_list method to configure the JSON formatter to include a
list of all spans in the current trace in formatting events (similarly to the
text formatter) (#741)with_current_span method to configure the JSON formatter to include
a field for the current span (the leaf of the trace) in formatted events
(#741)with_thread_names and with_thread_ids methods to configure
fmt::Subscribers and fmt::Layers to include the thread name and/or thread ID
of the current thread when formatting events (#818)Thanks to new contributors @mockersf, @keetonian, and @Pothulapati for contributing to this release!
parking_lot: Updated the optional parking_lot dependency to accept the latest parking_lot version
parking_lot dependency to accept the
latest parking_lot version (#774)Thanks to @rkuhn, @greenwoodcm, and @Ralith for contributing to this release!
fmt: Fixed an issue in the JSON formatter where using Span::record would result in malformed spans
Span::record would
result in malformed spans (#709)Add latest symlink builder option
ChronoUtc format_time (#677)This release includes several API ergonomics improvements, including shorthand constructors for many types, and an extension trait for initializing su
This release includes several API ergonomics improvements, including shorthand
constructors for many types, and an extension trait for initializing subscribers
using method-chaining style. Additionally, several bugs in less commonly used
fmt APIs were fixed.
fmt
(including tracing_subscriber::fmt() to return a SubscriberBuilder,
tracing_subscriber::fmt::layer() to return a format Layer, etc) (#660)tracing_subscriber::registry() to
construct a new registry (#660)SubscriberInitExt extension trait for more ergonomic subscriber
initialization (#660)LayerBuilder methods to Layer (#655)LayerBuilder, as Layer now implements all builder methods (#655)Compact formatter not omitting levels with
with_level(false) (#657)fmt::Layer duplicating the fields for a new span if another
layer has already formatted its fields (#634)record to add new fields to a span
that already has fields (#659)env-filter: Regression where filter directives were selected in the order they were listed, rather than most specific first
fmt: Added flatten_event to SubscriberBuilder
flatten_event to SubscriberBuilder (#599)with_level to SubscriberBuilder (#594)filter: EnvFilter directive selection now behaves correctly (i.e. like env_logger)
EnvFilter directive selection now behaves correctly (i.e. like
env_logger) (#583)EnvFilter incorrectly allowing less-specific filter
directives to enable events that are disabled by more-specific filters (#583)EnvFilter performance improvements,
especially when filtering events generated by log records (#578, #583)BTreeMap with Vec in DirectiveSet, improving
iteration performance significantly with typical numbers of filter directives
(#580)A big thank-you to @samschlegel for lots of help with EnvFilter performance
tuning in this release!
fmt: Renamed Context to FmtContext (#420, #425)
Context to FmtContext (#420, #425)Builder to SubscriberBuilder (#420)Filter. Use EnvFilter instead (#434)Registry, a Subscriber implementation that Layers can use
as a high-performance, in-memory span store. (#420, #425, #432, #433, #435)LookupSpan trait, implemented by Subscribers to expose
stored span data to Layers (#420)fmt::Layer, to allow composing log formatting with other LayersContext to FmtContext (#420, #425) (BREAKING)Builder to SubscriberBuilder (#420) (BREAKING)fmt::Subscriber in terms of the Registry
and Layers (#420)Filter. Use EnvFilter instead (#434) (BREAKING)fmt::SubscriberBuilder::init not setting up log compatibility
(#489)Layered subscribers failing to downcast to their own type
(#549)Layer::downcast_ref returning invalid references (#454)fmt: Fixed empty {} printed after spans with no fields
{} printed after spans with no fields (f079f2d)env_filter: Documentation for filtering directives
smallvec dependency to 0.1 (#543)Layered subscribers failing to downcast to their own type
(#549)FormattedFields
extensions from the same formatter type (1c3bb70)fmt::Layer::on_record inserting a new FormattedFields when
formatted fields for a span already exist (1c3bb70)registry: Removed inadvertently committed dbg! macros
dbg! macros (#533)fmt: Public FormattedFields::new constructor
FormattedFields::new constructor (#478)fmt::Layer documentation (#510)with_target(false) (#481)fmt::SubscriberBuilder::init not setting up log compatibility
(#489)no-default-features (#499, #500)LookupSpans implementation for Layered
LookupSpans implementation for Layered (#448)SpanRef::from_root to iterate over a span's parents from the root (#460)Context::scope, to iterate over the current context from the root (#460)Context::lookup_current, which returns a SpanRef to the current
span's data (#460)Context methods to be less restrictive (#460)Layer::downcast_ref returning invalid references (#454)These FormatFields and FormatEvent will likely see additional breaking changes in subsequent alpha. (#420, #425)
Registry, a reusable span store that Layers can use a
high-performance, in-memory store. (#420, #425, #432, #433, #435)fmt::Subscriber in terms of the Registry
and Layers (#420)fmt::format::FormatFields and
fmt::format::FormatEvent to accept a mandatory FmtContext. These
FormatFields and FormatEvent will likely see additional breaking
changes in subsequent alpha. (#420, #425)Filter. Use EnvFilter instead (#434)Thanks to all the contributors to this release!
Add init and try_init functions to FmtSubscriber
init and try_init functions to FmtSubscriber (#385)ChronoUtc and ChronoLocal timers, RFC 3339 support (#387)tracing::subscriber::set_default which sets the default
subscriber and returns a drop guard. This drop guard will reset the
dispatch on drop (#388).EnvFilter. Setting RUST_LOG=target
previously only the ERROR level, while it should enable everything.
tracing-subscriber now defaults to TRACE if no level is specified
(#401)tracing-log feature flag for init + try_init. The feature flag
tracing_log was used instead of the correct tracing-log. As a
result, both tracing-log and tracing_log needed to be specified in
order to initialize the global logger. Only tracing-log needs to be
specified now (#400).Thanks to all the contributors to this release!
Spans not being closed properly when FmtSubscriber::current_span is used
FmtSubscriber::current_span is used
(#371)Spans entered twice on the same thread sometimes being completely exited when the more deeply-nested entry is exited
with_ansi(false) on FmtSubscriber not disabling ANSI color
formatting for timestamps (#354)FmtSubscriber that could cause spans to not
be closed when all references are dropped (#366)Layered subscribers not properly forwarding calls to current_span
Layered subscribers not properly forwarding calls to current_span
(#350)Your coding agent can read these notes before it upgrades. Set up the MCP server →