PackageTrack
Sign in Get early access

tracing-subscriber

Utilities for implementing and composing `tracing` subscribers.

0.3.23 563M downloads/mo #175 most downloaded on crates.io tokio-rs/tracing

What this package is like to depend on

Last release 5 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

4 releases in the last 12 months

see the full history below

Release timeline

67 releases · Jun 2019 to Mar 2026
2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 67
  1. 0.3.23 13 Mar 2026
    Release notes

    Fixed

    • Allow ansi sanitization to be disabled (#3484)
    Open source →
    Release notes

    Fixed

    • Allow ansi sanitization to be disabled (#3484)
    Open source →
  2. 0.3.22 28 Nov 2025
    Release notes

    Important

    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.

    Changed

    • tracing: updated to 0.1.43 (#3427)
    Open source →
    Release notes

    Important

    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.

    Changed

    • tracing: updated to 0.1.43 (#3427)
    Open source →
  3. 0.3.21 26 Nov 2025 withdrawn
    Release notes

    Fixed

    • Change registry exit to decrement local span ref only (#3331)
    • Make Layered propagate on_register_dispatch (#3379)

    Changed

    • tracing: updated to 0.1.42 (#3418)

    Performance

    • Remove clone_span on enter (#3289)

    Documented

    • Fix a few small things in the format module (#3339)
    • Fix extra closing brace in layer docs (#3350)
    • Fix link in FmtSpan docs (#3411)
    Open source →
    Release notes

    Fixed

    • Change registry exit to decrement local span ref only (#3331)
    • Make Layered propagate on_register_dispatch (#3379)

    Changed

    • tracing: updated to 0.1.42 (#3418)

    Performance

    • Remove clone_span on enter (#3289)

    Documented

    • Fix a few small things in the format module (#3339)
    • Fix extra closing brace in layer docs (#3350)
    • Fix link in FmtSpan docs (#3411)
    Open source →
  4. 0.3.20 29 Aug 2025
    Release notes

    [ crates.io ] | [ docs.rs ]

    Fixed

    • Escape ANSI escape sequences in logs (#3368)

    Added

    • Implement Clone for EnvFilter (#3360)
    Open source →
  5. 0.3.19 29 Nov 2024
    Release notes

    [ crates.io ] | [ docs.rs ]

    This release updates the tracing dependency to v0.1.41 and the tracing-serde dependency to v0.2.0.

    Added

    • Add set_span_events to fmt::Subscriber (#2962)
    • tracing: Allow &[u8] to be recorded as event/span field (#2954)

    Changed

    • Set log max level when reloading (#1270)
    • Bump MSRV to 1.63 (#2793)
    • Use const thread_locals when possible (#2838)
    • Don't gate with_ansi() on the "ansi" feature (#3020)
    • Updated tracing-serde to 0.2.0 (#3160)
    Open source →
  6. 0.3.18 13 Nov 2023
    Release notes

    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.

    Added

    • chrono: Add chrono implementations of FormatTime (#2690)
    • subscriber: Add support for the NO_COLOR environment variable in fmt::Layer (#2647)
    • fmt: make format::Writer::new() public (#2680)
    • filter: Implement layer::Filter for Option<Filter> (#2407)

    Changed

    • log: bump version of tracing-log to 0.2 (#2772)
    • Increased minimum supported Rust version (MSRV) to 1.63.0+.

    Thanks to @shayne-fletcher, @dmlary, @kaifastromai, and @jsgf for contributing!

    Open source →
  7. 0.3.17 22 Apr 2023
    Release notes

    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.

    Fixed

    • env-filter: Add "unicode-case" and "unicode-perl" to the regex dependency, fixing a build error with recent versions of regex (#2566)
    • A number of minor documentation typos and other fixes (#2384, #2378, #2368, #2548)

    Added

    • filter: Add fmt::Display impl for filter::Targets (#2343)
    • fmt: Made with_ansi(false) no longer require the "ansi" feature, so that ANSI formatting escapes can be disabled without requiring ANSI-specific dependencies (#2532)

    Changed

    • fmt: Dim targets in the Compact formatter, matching the default formatter (#2409)

    Thanks to @keepsimple1, @andrewhalle, @LeoniePhiline, @LukeMathWalker, @howardjohn, @daxpedda, and @dbidwell94 for contributing to this release!

    Open source →
  8. 0.3.16 06 Oct 2022
    Release notes

    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.

    Fixed

    • layer: Option::None's Layer impl always setting the max_level_hint to LevelFilter::OFF (#2321)
    • Compilation with -Z minimal versions (#2246)
    • env-filter: Clarify that disabled level warnings are emitted by tracing-subscriber (#2285)

    Added

    • fmt: Log internal errors to stderr if writing a log line fails (#2102)
    • fmt: FmtLayer::log_internal_errors and FmtSubscriber::log_internal_errors methods for configuring whether internal writer errors are printed to stderr (#2102)
    • fmt: #[must_use] attributes on builders to warn if a Subscriber is configured but not set as the default subscriber (#2239)
    • filter: Filter::event_enabled method for filtering an event based on its fields (#2245, #2251)
    • filter: Targets::default_level accessor ([#2242])

    Changed

    • ansi: Replaced dependency on unmaintained ansi-term crate with nu-ansi-term ((#2287, fixes informational advisory RUSTSEC-2021-0139)
    • tracing-core: updated to 0.1.30
    • Minimum Supported Rust Version (MSRV) increased to Rust 1.50+ (when the ansi) feature flag is enabled (#2287)

    Documented

    • fmt: Correct inaccuracies in fmt::init documentation (#2224)
    • filter: Fix incorrect doc link in 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!

    Open source →
  9. 0.3.15 20 Jul 2022
    Release notes

    This release fixes a bug where the reload layer would fail to pass through max_level_hint to the underlying layer, potentially breaking filtering.

    Fixed

    • reload: pass through max_level_hint to the inner Layer (#2204)

    Thanks to @guswynn for contributing to this release!

    Open source →
  10. 0.3.14 01 Jul 2022
    Release notes

    This release fixes multiple filtering bugs in the Layer implementations for Option<impl Layer> and Vec<impl Layer>.

    Fixed

    • layer: Layer::event_enabled implementation for Option<impl Layer<S>> returning false when the Option is None, disabling all events globally (#2193)
    • layer: Layer::max_level_hint implementation for Option<impl Layer<S>> incorrectly disabling max level filtering when the option is None (#2195)
    • layer: 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!

    Open source →
  11. 0.3.13 30 Jun 2022 withdrawn
    Release notes

    This release of tracing-subscriber fixes a compilation failure due to an incorrect tracing-core dependency that was introduced in v0.3.12.

    Changed

    • tracing_core: Updated minimum dependency version to 0.1.28 (#2190)
    Open source →
  12. 0.3.12 29 Jun 2022 withdrawn
    Release notes

    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.

    Added

    • layer: Layer::event_enabled method, which can be implemented to filter events based on their field values (#2008)
    • reload: Filter implementation for reload::Layer (#2159)
    • layer: Layered::downcast_ref and Layered::is inherent methods (#2160)

    Changed

    • parking_lot: Updated dependency on parking_lot to 0.13.0 (#2143)
    • Replaced lazy_static dependency with once_cell ([#2147])

    Fixed

    • Don't enable tracing-core features by default (#2107)
    • Several documentation link and typo fixes (#2064, #2068, #[2077], #2161, #1088)

    Thanks to @ben0x539, @jamesmunns, @georgemp, @james7132, @jswrenn, @CAD97, and @guswynn for contributing to this release!

    Open source →
  13. 0.3.11 09 Apr 2022
    Release notes

    This is a bugfix release for the Filter implementation for EnvFilter added in v0.3.10.

    Fixed

    • env-filter: Added missing Filter::on_record callback to EnvFilter's Filter impl (#2058)
    • env-filter: Fixed method resolution issues when calling EnvFilter methods with both the Filter and Layer traits in scope (#2057)
    • env-filter: Fixed 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!

    Open source →
  14. 0.3.10 01 Apr 2022
    Release notes

    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.

    Added

    • registry: Implement Filter for EnvFilter, allowing it to be used with per-layer filtering (#1983)
    • registry: 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)
    • registry: Filtered::filter and Filtered::filter_mut accessors (#1959)
    • registry: Filtered::inner and Filtered::inner_mut accessors to borrow the wrapped Layer (#2034)
    • layer: Implement Layer for Vec<L: Layer>, to allow composing together a dynamically sized list of Layers (#2027)
    • layer: Layer::boxed method to make type-erasing Layers easier (#2026)
    • fmt: fmt::Layer::writer and fmt::Layer::writer_mut accessors (#2034)
    • fmt: fmt::Layer::set_ansi method to allow changing the ANSI formatting configuration at runtime (#2034)
    • env-filter: EnvFilter::builder to configure a new EnvFilter prior to parsing it (#2035)
    • Several documentation fixes and improvements (#1972, #1971, #2023, #2023)

    Fixed

    • fmt: fmt::Layer's auto traits no longer depend on the Subscriber type parameter's auto traits (#2025)
    • env-filter: Fixed missing help text when the ansi feature is disabled (#2029)

    Thanks to new contributors @TimoFreiberg and @wagenet, as well as @CAD97 for contributing to this release!

    Open source →
  15. 0.3.9 18 Feb 2022
    Release notes

    This release updates the minimum supported Rust version (MSRV) to 1.49.0, and updates the (optional) dependency on parking_lot to v0.12.

    Changed

    • Updated minimum supported Rust version (MSRV) to 1.49.0 (#1913)
    • parking_lot: updated to v0.12 (008339d)

    Added

    Open source →
  16. 0.3.8 04 Feb 2022
    Release notes

    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.

    Added

    • json: Experimental support for recording valuable values as structured JSON (#1862, #1901)
    • filter: Targets::would_enable method for testing if a Targets filter would enable a given target (#1903)
    • fmt: map_event_format, map_fmt_fields, and map_writer methods to fmt::Layer and fmt::SubscriberBuilder (#1871)

    Changed

    • tracing-core: updated to 0.1.22

    Fixed

    • Set smallvec minimal version to 1.2.0, to fix compilation errors with -Z minimal-versions (#1890)
    • Minor documentation fixes (#1902, #1893)

    Thanks to @guswynn, @glts, and @lilyball for contributing to this release!

    Open source →
  17. 0.3.7 25 Jan 2022
    Release notes

    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.

    Added

    • filter: Added combinators for combining filters (#1578)

    Fixed

    • registry: Updated thread-local to v1.1.4 (#1858)

    Thanks to new contributor @matze for contributing to this release!

    Open source →
  18. 0.3.6 14 Jan 2022
    Release notes

    This release adds configuration options to tracing_subscriber::fmt to log source code locations for events.

    Added

    • fmt: Added with_file and with_line_number configuration methods to fmt::Format, fmt::SubscriberBuilder, and fmt::Layer (#1773)

    Fixed

    • fmt: Removed incorrect leading comma from span fields with the Pretty formatter (#1833)

    Deprecated

    • fmt: Deprecated 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!

    Open source →
  19. 0.3.5 30 Dec 2021
    Release notes

    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.

    Added

    • fmt: Added OffsetLocalTime formatter to fmt::time for formatting local timestamps with a fixed offset (#1772)

    Fixed

    • fmt: Added a 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!

    Open source →
  20. 0.3.4 23 Dec 2021
    Release notes

    This release contains bugfixes for the fmt module, as well as documentation improvements.

    Fixed

    • fmt: Fixed fmt not emitting log lines when timestamp formatting fails (#1689)
    • fmt: Fixed double space before thread IDs with Pretty formatter (#1778)
    • Several documentation improvements (#1608, #1699, #1701)

    Thanks to new contributors @Swatinem and @rukai for contributing to this release!

    Open source →
  21. 0.3.3 29 Nov 2021
    Release notes

    This release fixes a pair of regressions in tracing-subscriber's fmt module.

    Fixed

    • fmt: Fixed missing event fields with Compact formatter (#1755)
    • fmt: Fixed PrettyFields formatter (and thus format::Pretty event formatter) ignoring the fmt::Layer's ANSI color code configuration (#1747)
    Open source →
  22. 0.3.2 20 Nov 2021
    Release notes

    Added

    • Use argv0 for syslog identifier (#3372)
    Open source →
    Release notes

    Fixed

    • fmt: Fixed MakeWriter filtering not working with BoxMakeWriter (#1694)

    Added

    • fmt: Writer::has_ansi_escapes method to check if an output supports ANSI terminal formatting escape codes (#1696)
    • fmt: Added additional ANSI terminal formatting to field formatters when supported (#1702)
    • fmt: Added FmtContext::span_scope, FmtContext::event_scope, and FmtContext::parent_span methods for accessing the current span and its scope when formatting an event (#1728)
    • fmt: Improved documentation on implementing event formatters (#1727)
    Open source →
  23. 0.3.1 25 Oct 2021
    Release notes

    This release fixes a few issues related to feature flagging.

    Fixed

    • time: Compilation error when enabling the "time" feature flag without also enabling the "local-time" feature flag (#1685)
    • registry: Unused method warnings when the "std" feature is enabled but the "registry" feature is disabled (#1686)
    Open source →
  24. 0.3.0 22 Oct 2021
    Release notes

    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.

    Breaking Changes

    • Removed APIs deprecated in the v0.2.x release series.
    • Renamed Layer::new_span to Layer::on_new_span (#1674)
    • Removed Layer impl for Arc<L: Layer<S>> and Arc<dyn Layer<S> + ...> (#1649)
    • Replaced the chrono crate with the time crate for timestamp formatting, to resolve RUSTSEC-2020-0159 (#1646)
    • Removed 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.
    • Changed FormatEvent::format_event and FormatFields::format_fields trait methods to take a Writer type, rather than a &mut dyn fmt::Write trait object (#1661)
    • Changed the signature of the MakeWriter trait by adding a lifetime parameter (#781)

    Changed

    • layer: Renamed Layer::new_span to Layer::on_new_span (#1674)
    • fmt: Changed 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, env-filter: json and env-filter feature flags are no longer enabled by default (#1647)

    Removed

    • Removed deprecated CurrentSpan type (#1320)
    • registry: Removed deprecated SpanRef::parents iterator, replaced by SpanRef::scope in #1431 ([#1648)])
    • layer: Removed deprecated Context::scope iterator, replaced by Context::span_scope and Context::event_scope in #1431 and #1434 ([#1648)])
    • layer: Removed Layer impl for Arc<L: Layer<S>> and Arc<dyn Layer<S> + ...>. These interfere with per-layer filtering. (#1649)
    • fmt: Removed deprecated LayerBuilder type (#1673)
    • fmt: Removed fmt::Layer::on_event (renamed to fmt::Layer::fmt_event) (#1673)
    • fmt, chrono: Removed the chrono feature flag and APIs for using the chrono crate for timestamp formatting (#1646)

    Added

    • fmt, time: LocalTime and UtcTime types for formatting timestamps using the time crate (#1646)
    • fmt: Added a lifetime parameter to the 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)
    • env-filter: Documentation improvements ([#1637])
    • Support for some APIs on #![no_std] targets, by disabling the std feature flag (#1660)

    Thanks to @Folyd and @nmathewson for contributing to this release!

    Open source →
    Release notes

    Added

    • New Base64 propagator
    • New SpanBuilder api
    • Zipkin Exporter crate

    Changed

    • Switch to SpanId and TraceId from u64 and u128
    • Remove &mut self requirements for Span API

    Fixed

    • circular Tracer debug impl
    Open source →
  25. 0.2.25 05 Oct 2021
    Release notes

    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.

    Fixed

    • registry: Forward Filtered::downcast_raw to wrapped Layer (#1619)

    Added

    Thanks to @bryanburgers for contributing to this release!

    Open source →
  26. 0.2.24 20 Sep 2021
    Release notes

    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.

    Fixed

    • Fixed compilation on Rust 1.42.0 (#1580, #1581)
    • registry: Ensure per-layer filter enabled state is cleared when a global filter short-circuits filter evaluation (#1575)
    • layer: Fixed Layer::on_layer not being called for Boxed Layers, which broke per-layer filtering (#1576)

    Added

    • filter: Added Targets::iter, returning an iterator over the set of target-level pairs enabled by a Targets filter (#1574)
    • filter: Added IntoIterator implementations for Targets and &Targets (#1574)

    Thanks to new contributor @connec for contributing to this release!

    Open source →
  27. 0.2.23 16 Sep 2021
    Release notes

    This release fixes a few bugs in the per-layer filtering API added in v0.2.21.

    Fixed

    • env-filter: Fixed excessive EnvFilter memory use (#1568)
    • filter: Fixed a panic that may occur in debug mode when using per-layer filters together with global filters (#1569)
    • Fixed incorrect documentation formatting (#1572)
    Open source →
  28. 0.2.22 13 Sep 2021
    Release notes

    This fixes a regression where the filter::ParseError type was accidentally renamed.

    Fixed

    • filter: Fix filter::ParseError accidentally being renamed to filter::DirectiveParseError (#1558)
    Open source →
  29. 0.2.21 12 Sep 2021 withdrawn
    Release notes

    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.

    Deprecated

    • registry: SpanRef::parent_id, which cannot properly support per-layer filtering. Use .parent().map(SpanRef::id) instead. (#1523)

    Fixed

    • layer Context methods that are provided when the Subscriber implements LookupSpan no longer require the "registry" feature flag (#1525)
    • layer fmt::Debug implementation for Layered no longer requires the S type parameter to implement Debug (#1528)

    Added

    • registry: Filter trait, Filtered type, Layer::with_filter method, and other APIs for per-layer filtering (#1523)
    • filter: FilterFn and DynFilterFn types that implement global (Layer) and per-layer (Filter) filtering for closures and function pointers (#1523)
    • filter: Targets filter, which implements a lighter-weight form of EnvFilter-like filtering (#1550)
    • env-filter: Added support for filtering on floating-point values (#1507)
    • layer: Layer::on_layer callback, called when layering the Layer onto a Subscriber (#1523)
    • layer: Layer implementations for Box<L> and Arc<L> where L: Layer ([#1536])
    • layer: Layer implementations for Box<dyn Layer<S> + Send + Sync + 'static> and Arc<dyn Layer<S> + Send + Sync + 'static> ([#1536])
    • A number of small documentation fixes and improvements (#1553, #1544, #1539, #1524)

    Special thanks to new contributors @jsgf and @maxburke for contributing to this release!

    Open source →
  30. 0.2.20 17 Aug 2021
    Release notes

    Fixed

    • fmt: Fixed fmt printing only the first source for errors with a chain of sources (#1460)
    • fmt: Fixed missing space between level and event in the Pretty formatter (#1498)
    • json: Fixed Json formatter not honoring without_time and with_level configurations (#1463)

    Added

    • registry: Improved panic message when cloning a span whose ID doesn't exist, to aid in debugging issues with multiple subscribers (#1483)
    • registry: Improved documentation on span ID generation (#1453)

    Thanks to new contributors @joshtriplett and @lerouxrgd, and returning contributor @teozkr, for contributing to this release!

    Open source →
  31. 0.2.19 26 Jun 2021
    Release notes

    Deprecated

    • registry: SpanRef::parents, SpanRef::from_root, and Context::scope iterators, which are replaced by new SpanRef::scope and Scope::from_root iterators (#1413)

    Added

    • registry: SpanRef::scope method, which returns a leaf-to-root Iterator including the leaf span (#1413)
    • registry: Scope::from_root method, which reverses the scope iterator to iterate root-to-leaf (#1413)
    • registry: Context::event_span method, which looks up the parent span of an event (#1434)
    • registry: Context::event_scope method, returning a Scope iterator over the span scope of an event (#1434)
    • fmt: MakeWriter::make_writer_for method, which allows returning a different writer based on a span or event's metadata (#1141)
    • fmt: MakeWriterExt trait, with with_max_level, with_min_level, with_filter, and, and or_else combinators (#1274)
    • fmt: MakeWriter implementation for Arc<W> where &W: io::Write (#1274)

    Thanks to @teozkr and @Folyd for contributing to this release!

    Open source →
  32. 0.2.18 01 May 2021
    Release notes

    Deprecated

    • Deprecated the CurrentSpan type, which is inefficient and largely superseded by the registry API (#1321)

    Fixed

    • json: Invalid JSON emitted for events in spans with no fields (#1333)
    • json: Missing span data for synthesized new span, exit, and close events (#1334)
    • fmt: Extra space before log lines when timestamps are disabled (#1355)

    Added

    • env-filter: Support for filters on spans whose names contain any characters other than { and ] (#1368)

    Thanks to @Folyd, and new contributors @akinnane and @aym-v for contributing to this release!

    Open source →
  33. 0.2.17 12 Mar 2021
    Release notes

    Fixed

    • fmt: Pretty formatter now honors with_ansi(false) to disable ANSI terminal formatting (#1240)
    • fmt: Fixed extra padding when using Pretty formatter (#1275)
    • chrono: Removed extra trailing space with ChronoLocal time formatter (#1103)

    Added

    • fmt: Added FmtContext::current_span() method, returning the current span (#1290)
    • fmt: 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!

    Open source →
  34. 0.2.16 20 Feb 2021
    Release notes

    Fixed

    • env-filter: Fixed directives where the level is in mixed case (such as Info) failing to parse (#1126)
    • fmt: Fixed fmt::Subscriber not providing a max-level hint (#1251)
    • tracing-subscriber no longer enables tracing and tracing-core's default features (#1144)

    Changed

    • chrono: Updated chrono dependency to 0.4.16 (#1189)
    • log: Updated tracing-log dependency to 0.1.2

    Thanks to @salewski, @taiki-e, @davidpdrsn and @markdingram for contributing to this release!

    Open source →
  35. 0.2.15 02 Nov 2020
    Release notes

    Fixed

    • fmt: Fixed wrong lifetime parameters on FormatFields impl for FmtContext (#1082)

    Added

    • fmt: format::Pretty, an aesthetically pleasing, human-readable event formatter for local development and user-facing CLIs (#1080)
    • fmt: FmtContext::field_format, which returns the subscriber's field formatter (#1082)
    Open source →
  36. 0.2.14 22 Oct 2020
    Release notes

    Fixed

    • registry: Fixed Registry::new allocating an excessively large amount of memory, most of which would never be used (#1064)

    Changed

    • registry: Improved new_span performance by reusing HashMap allocations for Extensions (#1064)
    • registry: Significantly improved the performance of Registry::enter and Registry::exit (#1058)
    Open source →
  37. 0.2.13 07 Oct 2020
    Release notes

    Changed

    • Updated tracing-core to 0.1.17 (#992)

    Added

    • env-filter: Added support for filtering on targets which contain dashes (#1014)
    • env-filter: Added a warning when creating an 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!

    Open source →
  38. 0.2.12 11 Sep 2020
    Release notes

    Fixed

    • env-filter: Fixed a regression where Option<Level> lost its Into<LevelFilter> impl (#966)
    • env-filter: Fixed EnvFilter enabling spans that should not be enabled when multiple subscribers are in use (#927)

    Changed

    • json: format::Json now outputs fields in a more readable order (#892)
    • Updated tracing-core dependency to 0.1.16

    Added

    • fmt: Add BoxMakeWriter for erasing the type of a MakeWriter implementation (#958)
    • fmt: Add TestWriter MakeWriter implementation to support libtest output capturing (#938)
    • layer: Add Layer impl for Option<T> where T: Layer (#910)
    • env-filter: Add From<Level> impl for Directive (#918)
    • Multiple documentation fixes and improvements

    Thanks to @Pothulapati, @samrg472, @bryanburgers, @keetonian, and @SriRamanujam for contributing to this release!

    Open source →
  39. 0.2.11 11 Aug 2020
    Release notes

    Fixed

    • env-filter: Incorrect max level hint when filters involving span field values are in use (#907)
    • registry: Fixed inconsistent span stacks when multiple registries are in use on the same thread (#901)

    Changed

    • env-filter: regex dependency enables fewer unused feature flags (#899)

    Thanks to @bdonlan and @jeromegn for contributing to this release!

    Open source →
  40. 0.2.10 31 Jul 2020
    Release notes

    Fixed

    • docs: Incorrect formatting (#862)

    Changed

    • 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 tracing-core (#853)
    • filter: Significant performance improvements when comparing LevelFilters and Levels (#853)
    • Updated the minimum tracing-core dependency to 0.1.12 (#853)

    Added

    • filter: 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)
    Open source →
  41. 0.2.9 24 Jul 2020
    Release notes

    Fixed

    • fmt: Fixed compilation failure on MSRV when the chrono feature is disabled (#844)

    Added

    • fmt: Span lookup methods defined by layer::Context are now also provided by FmtContext (#834)
    Open source →
  42. 0.2.8 17 Jul 2020
    Release notes

    Changed

    • fmt: When the 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: Updated ansi_term dependency to 0.12 (#816)

    Added

    • json: 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)
    • json: 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)
    • fmt: 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!

    Open source →
  43. 0.2.7 01 Jul 2020
    Release notes

    Changed

    • parking_lot: Updated the optional parking_lot dependency to accept the latest parking_lot version (#774)

    Fixed

    • fmt: Fixed events with explicitly overridden parent spans being formatted as though they were children of the current span (#767)

    Added

    • fmt: Added the option to print synthesized events when spans are created, entered, exited, and closed, including span durations (#761)
    • Documentation clarification and improvement (#762, #769)

    Thanks to @rkuhn, @greenwoodcm, and @Ralith for contributing to this release!

    Open source →
  44. 0.2.6 19 Jun 2020
    Release notes

    Fixed

    • fmt: Fixed an issue in the JSON formatter where using Span::record would result in malformed spans (#709)
    Open source →
  45. 0.2.5 21 Apr 2020
    Release notes

    Added

    • Add latest symlink builder option (#3447)

    Fixed

    • Fix RollingFileAppender broken links in docs (#3445)
    • Fix parsing of date from filename when no time is incuded (#3471)
    Open source →
    Release notes

    Changed

    • fmt: Bump sharded-slab dependency (#679)

    Fixed

    • fmt: remove trailing space in ChronoUtc format_time (#677)
    Open source →
  46. 0.2.4 06 Apr 2020
    Release notes

    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.

    Added

    • fmt: Shorthand free functions for constructing most types in fmt (including tracing_subscriber::fmt() to return a SubscriberBuilder, tracing_subscriber::fmt::layer() to return a format Layer, etc) (#660)
    • registry: Shorthand free function tracing_subscriber::registry() to construct a new registry (#660)
    • Added SubscriberInitExt extension trait for more ergonomic subscriber initialization (#660)

    Changed

    • fmt: Moved LayerBuilder methods to Layer (#655)

    Deprecated

    • fmt: LayerBuilder, as Layer now implements all builder methods (#655)

    Fixed

    • fmt: Fixed Compact formatter not omitting levels with with_level(false) (#657)
    • fmt: Fixed fmt::Layer duplicating the fields for a new span if another layer has already formatted its fields (#634)
    • fmt: Added missing space when using record to add new fields to a span that already has fields (#659)
    • Updated outdated documentation (#647)
    Open source →
  47. 0.2.3 05 Mar 2020
    Release notes

    Fixed

    • env-filter: Regression where filter directives were selected in the order they were listed, rather than most specific first (#624)
    Open source →
  48. 0.2.2 28 Feb 2020
    Release notes

    Added

    • fmt: Added flatten_event to SubscriberBuilder (#599)
    • fmt: Added with_level to SubscriberBuilder (#594)
    Open source →
  49. 0.2.1 14 Feb 2020
    Release notes

    Changed

    • filter: EnvFilter directive selection now behaves correctly (i.e. like env_logger) (#583)

    Fixed

    • filter: Fixed EnvFilter incorrectly allowing less-specific filter directives to enable events that are disabled by more-specific filters (#583)
    • filter: Multiple significant EnvFilter performance improvements, especially when filtering events generated by log records (#578, #583)
    • filter: Replaced 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!

    Open source →
  50. 0.2.0 04 Feb 2020
    Release notes

    Breaking Changes

    • fmt: Renamed Context to FmtContext (#420, #425)
    • fmt: Renamed Builder to SubscriberBuilder (#420)
    • filter: Removed Filter. Use EnvFilter instead (#434)

    Added

    • registry: Registry, a Subscriber implementation that Layers can use as a high-performance, in-memory span store. (#420, #425, #432, #433, #435)
    • registry: Added LookupSpan trait, implemented by Subscribers to expose stored span data to Layers (#420)
    • fmt: Added fmt::Layer, to allow composing log formatting with other Layers
    • fmt: Added support for JSON field and event formatting (#377, #415)
    • filter: Documentation for filtering directives (#554)

    Changed

    • fmt: Renamed Context to FmtContext (#420, #425) (BREAKING)
    • fmt: Renamed Builder to SubscriberBuilder (#420) (BREAKING)
    • fmt: Reimplemented fmt::Subscriber in terms of the Registry and Layers (#420)

    Removed

    • filter: Removed Filter. Use EnvFilter instead (#434) (BREAKING)

    Fixed

    • fmt: Fixed memory leaks in the slab used to store per-span data (3c35048)
    • fmt: fmt::SubscriberBuilder::init not setting up log compatibility (#489)
    • fmt: Spans closed by a child span closing not also closing their parents (#514)
    • Layer: Fixed Layered subscribers failing to downcast to their own type (#549)
    • Layer: Fixed Layer::downcast_ref returning invalid references (#454)
    Open source →
    Release notes

    Added

    • Make trace and metrics features optional
    • ExportResult as specified in the specification
    • Add Futures compatibility API
    • Added serde serialize support to SpanData
    • Separate OpenTelemetry Jaeger crate

    Changed

    • Rename HttpTraceContextPropagator to TraceContextPropagator
    • Rename HttpB3Propagator to B3Propagator
    • Switch to Apache 2 license
    • Resolve agent addresses to allow non-static IP
    • Remove tracer name prefix from span name

    Removed

    • Remove add_link from spans
    Open source →
  51. 0.2.0-alpha.6 03 Feb 2020 pre-release
    Release notes

    Fixed

    • fmt: Fixed empty {} printed after spans with no fields (f079f2d)
    • fmt: Fixed inconsistent formatting when ANSI colors are disabled (506a482)
    • fmt: Fixed misaligned levels when ANSI colors are disabled (eba1adb)
    • Fixed warnings on nightly Rust compilers (#558)
    Open source →
  52. 0.2.0-alpha.5 31 Jan 2020 pre-release
    Release notes

    Added

    • env_filter: Documentation for filtering directives (#554)
    • registry, env_filter: Updated smallvec dependency to 0.1 (#543)

    Fixed

    • registry: Fixed a memory leak in the slab used to store per-span data (3c35048)
    • Layer: Fixed Layered subscribers failing to downcast to their own type (#549)
    • fmt: Fixed a panic when multiple layers insert FormattedFields extensions from the same formatter type (1c3bb70)
    • fmt: Fixed fmt::Layer::on_record inserting a new FormattedFields when formatted fields for a span already exist (1c3bb70)
    Open source →
  53. 0.2.0-alpha.4 11 Jan 2020 pre-release
    Release notes

    Fixed

    • registry: Removed inadvertently committed dbg! macros (#533)
    Open source →
  54. 0.2.0-alpha.3 11 Jan 2020 pre-release withdrawn
    Release notes

    Added

    • fmt: Public FormattedFields::new constructor (#478)
    • fmt: Added examples to fmt::Layer documentation (#510)
    • Documentation now shows what feature flags are required by each API item (#525)

    Fixed

    • fmt: Missing space between timestamp and level (#480)
    • fmt: Incorrect formatting with with_target(false) (#481)
    • fmt: fmt::SubscriberBuilder::init not setting up log compatibility (#489)
    • registry: Spans exited out of order not being closed properly on exit (#509)
    • registry: Memory leak when spans are closed by a child span closing (#514)
    • registry: Spans closed by a child span closing not also closing their parents (#514)
    • Compilation errors with no-default-features (#499, #500)
    Open source →
  55. 0.2.0-alpha.2 08 Dec 2019 pre-release
    Release notes

    Added

    • 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)

    Changed

    • Lifetimes on some new Context methods to be less restrictive (#460)

    Fixed

    • Layer::downcast_ref returning invalid references (#454)
    • Compilation failure on 32-bit platforms (#462)
    • Compilation failure with ANSI formatters (#438)
    Open source →
  56. 0.2.0-alpha.1 19 Nov 2019 pre-release
    Release notes

    Added

    • Registry, a reusable span store that Layers can use a high-performance, in-memory store. (#420, #425, #432, #433, #435)
    • Reimplemented fmt::Subscriber in terms of the Registry and Layers (#420)
    • Add benchmarks for fmt subscriber (#421)
    • Add support for JSON field and event formatting (#377, #415)

    Changed

    • BREAKING: Change 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)
    • BREAKING: Removed Filter. Use EnvFilter instead (#434)

    Contributors

    Thanks to all the contributors to this release!

    • @pimeys for #377 and #415
    Open source →
  57. 0.1.6 29 Oct 2019
    Release notes

    Added

    • Add init and try_init functions to FmtSubscriber (#385)
    • Add ChronoUtc and ChronoLocal timers, RFC 3339 support (#387)
    • Add tracing::subscriber::set_default which sets the default subscriber and returns a drop guard. This drop guard will reset the dispatch on drop (#388).

    Fixed

    • Fix default level for 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)
    • Fix 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).

    Contributors

    Thanks to all the contributors to this release!

    • @emschwartz for #385, #387, #400 and #401
    • @bIgBV for #388
    Open source →
  58. 0.1.5 07 Oct 2019
    Release notes

    Fixed

    • Spans not being closed properly when FmtSubscriber::current_span is used (#371)
    Open source →
    Release notes

    Added

    • trace-context propagator

    Changed

    • Prometheus API cleanup
    Open source →
  59. 0.1.4 26 Sep 2019
    Release notes

    Fixed

    • Spans entered twice on the same thread sometimes being completely exited when the more deeply-nested entry is exited (#361)
    • Setting with_ansi(false) on FmtSubscriber not disabling ANSI color formatting for timestamps (#354)
    • Incorrect reference counting in FmtSubscriber that could cause spans to not be closed when all references are dropped (#366)
    Open source →
    Release notes

    Added

    • Parent option for default sampler

    Fixed

    • SDK tracer default span id
    Open source →
  60. 0.1.3 16 Sep 2019
    Release notes

    Fixed

    • Layered subscribers not properly forwarding calls to current_span (#350)
    Open source →
    Release notes

    Changed

    • Ensure spans are always send and sync
    • Allow static lifetimes for span names
    • Improve KeyValue ergonomics
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive