-
Notifications
You must be signed in to change notification settings - Fork 761
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
subscriber: replace chrono
with time
for timestamp formatting
#1646
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Motivation Currently, `tracing-subscriber` supports the `chrono` crate for timestamp formatting, via a default-on feature flag. When this code was initially added to `tracing-subscriber`, the `time` crate did not have support for the timestamp formatting options we needed. Unfortunately, the `chrono` crate's maintainance status is now in question (see #1598). Furthermore, `chrono` depends on version 0.1 of the `time` crate, which contains a security vulnerability (https://rustsec.org/advisories/RUSTSEC-2020-0071.html). This vulnerability is fixed in more recent releases of `time`, but `chrono` still uses v0.1. ## Solution Fortunately, the `time` crate now has its own timestamp formatting support. This branch replaces the `ChronoLocal` and `ChronoUtc` timestamp formatters with new `LocalTime` and `UtcTime` formatters. These formatters use the `time` crate's formatting APIs rather than `chrono`'s. This removes the vulnerable dependency on `time` 0.1 Additionally, the new `time` APIs are feature flagged as an _opt-in_ feature, rather than as an _opt-out_ feature. This should make it easier to avoid accidentally depending on the `time` crate when more sophisticated timestamp formatting is _not_ required. In a follow-up branch, we could also add support for `humantime` as an option for timestamp formatting. Naturally, since this removes existing APIs, this is a breaking change, and will thus require publishing `tracing-subscriber` 0.3. We'll want to do some other breaking changes as well. Fixes #1598.
The security audit check fails because |
davidbarsky
requested changes
Oct 18, 2021
Co-authored-by: David Barsky <me@davidbarsky.com>
Co-authored-by: David Barsky <me@davidbarsky.com>
davidbarsky
approved these changes
Oct 18, 2021
4 tasks
hawkw
added a commit
that referenced
this pull request
Oct 21, 2021
) ## Motivation Currently, `tracing-subscriber` supports the `chrono` crate for timestamp formatting, via a default-on feature flag. When this code was initially added to `tracing-subscriber`, the `time` crate did not have support for the timestamp formatting options we needed. Unfortunately, the `chrono` crate's maintainance status is now in question (see #1598). Furthermore, `chrono` depends on version 0.1 of the `time` crate, which contains a security vulnerability (https://rustsec.org/advisories/RUSTSEC-2020-0071.html). This vulnerability is fixed in more recent releases of `time`, but `chrono` still uses v0.1. ## Solution Fortunately, the `time` crate now has its own timestamp formatting support. This branch replaces the `ChronoLocal` and `ChronoUtc` timestamp formatters with new `LocalTime` and `UtcTime` formatters. These formatters use the `time` crate's formatting APIs rather than `chrono`'s. This removes the vulnerable dependency on `time` 0.1 Additionally, the new `time` APIs are feature flagged as an _opt-in_ feature, rather than as an _opt-out_ feature. This should make it easier to avoid accidentally depending on the `time` crate when more sophisticated timestamp formatting is _not_ required. In a follow-up branch, we could also add support for `humantime` as an option for timestamp formatting. Naturally, since this removes existing APIs, this is a breaking change, and will thus require publishing `tracing-subscriber` 0.3. We'll want to do some other breaking changes as well. Fixes #1598.
hawkw
added a commit
that referenced
this pull request
Oct 21, 2021
) ## Motivation Currently, `tracing-subscriber` supports the `chrono` crate for timestamp formatting, via a default-on feature flag. When this code was initially added to `tracing-subscriber`, the `time` crate did not have support for the timestamp formatting options we needed. Unfortunately, the `chrono` crate's maintainance status is now in question (see #1598). Furthermore, `chrono` depends on version 0.1 of the `time` crate, which contains a security vulnerability (https://rustsec.org/advisories/RUSTSEC-2020-0071.html). This vulnerability is fixed in more recent releases of `time`, but `chrono` still uses v0.1. ## Solution Fortunately, the `time` crate now has its own timestamp formatting support. This branch replaces the `ChronoLocal` and `ChronoUtc` timestamp formatters with new `LocalTime` and `UtcTime` formatters. These formatters use the `time` crate's formatting APIs rather than `chrono`'s. This removes the vulnerable dependency on `time` 0.1 Additionally, the new `time` APIs are feature flagged as an _opt-in_ feature, rather than as an _opt-out_ feature. This should make it easier to avoid accidentally depending on the `time` crate when more sophisticated timestamp formatting is _not_ required. In a follow-up branch, we could also add support for `humantime` as an option for timestamp formatting. Naturally, since this removes existing APIs, this is a breaking change, and will thus require publishing `tracing-subscriber` 0.3. We'll want to do some other breaking changes as well. Fixes #1598.
hawkw
pushed a commit
that referenced
this pull request
Oct 22, 2021
## Motivation This PR continues the work started in #1646 to replace `chrono` with `time`. I'll refer to @hawkw's motivation: > Currently, `tracing-subscriber` supports the `chrono` crate for > timestamp formatting, via a default-on feature flag. When this code > was initially added to `tracing-subscriber`, the `time` crate did not > have support for the timestamp formatting options we needed. > > Unfortunately, the `chrono` crate's maintenance status is now in > question (see #1598). Furthermore, `chrono` depends on version 0.1 of > the `time` crate, which contains a security vulnerability > (https://rustsec.org/advisories/RUSTSEC-2020-0071.html). This > vulnerability is fixed in more recent releases of `time`, but `chrono` > still uses v0.1. ## Solution I've replaced chrono with time 0.3. Unfortunately, some of chrono's builders for DateTimes are not present in `time`, which required the usage of `macro_rules!` macros to construct some of the hard-coded times. I also took the opportunity to tidy some of the tests and change the internal representation of `Rotation::NEVER` from year 9,999 to an `Option::None`. This branch changes `tracing-appender`'s MSRV from Rust 1.42 to Rust 1.51, the MSRV for the `time` crate when certain required feature flags are enabled. This does *not* effect the MSRV for other crates in this repository.
hawkw
pushed a commit
that referenced
this pull request
Oct 22, 2021
## Motivation This PR continues the work started in #1646 to replace `chrono` with `time`. I'll refer to @hawkw's motivation: > Currently, `tracing-subscriber` supports the `chrono` crate for > timestamp formatting, via a default-on feature flag. When this code > was initially added to `tracing-subscriber`, the `time` crate did not > have support for the timestamp formatting options we needed. > > Unfortunately, the `chrono` crate's maintenance status is now in > question (see #1598). Furthermore, `chrono` depends on version 0.1 of > the `time` crate, which contains a security vulnerability > (https://rustsec.org/advisories/RUSTSEC-2020-0071.html). This > vulnerability is fixed in more recent releases of `time`, but `chrono` > still uses v0.1. ## Solution I've replaced chrono with time 0.3. Unfortunately, some of chrono's builders for DateTimes are not present in `time`, which required the usage of `macro_rules!` macros to construct some of the hard-coded times. I also took the opportunity to tidy some of the tests and change the internal representation of `Rotation::NEVER` from year 9,999 to an `Option::None`. This branch changes `tracing-appender`'s MSRV from Rust 1.42 to Rust 1.51, the MSRV for the `time` crate when certain required feature flags are enabled. This does *not* effect the MSRV for other crates in this repository.
hawkw
pushed a commit
that referenced
this pull request
Oct 22, 2021
## Motivation This PR continues the work started in #1646 to replace `chrono` with `time`. I'll refer to @hawkw's motivation: > Currently, `tracing-subscriber` supports the `chrono` crate for > timestamp formatting, via a default-on feature flag. When this code > was initially added to `tracing-subscriber`, the `time` crate did not > have support for the timestamp formatting options we needed. > > Unfortunately, the `chrono` crate's maintenance status is now in > question (see #1598). Furthermore, `chrono` depends on version 0.1 of > the `time` crate, which contains a security vulnerability > (https://rustsec.org/advisories/RUSTSEC-2020-0071.html). This > vulnerability is fixed in more recent releases of `time`, but `chrono` > still uses v0.1. ## Solution I've replaced chrono with time 0.3. Unfortunately, some of chrono's builders for DateTimes are not present in `time`, which required the usage of `macro_rules!` macros to construct some of the hard-coded times. I also took the opportunity to tidy some of the tests and change the internal representation of `Rotation::NEVER` from year 9,999 to an `Option::None`. This branch changes `tracing-appender`'s MSRV from Rust 1.42 to Rust 1.51, the MSRV for the `time` crate when certain required feature flags are enabled. This does *not* effect the MSRV for other crates in this repository.
hawkw
added a commit
that referenced
this pull request
Oct 22, 2021
# 0.3.0 (Oct 22, 2021) 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]) - 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! [#1320]: #1320 [#1673]: #1673 [#1674]: #1674 [#1646]: #1646 [#1647]: #1647 [#1648]: #1648 [#1649]: #1649 [#1660]: #1660 [#1661]: #1661 [#1431]: #1431 [#1434]: #1434 [#781]: #781 [`chrono` crate]: https://crates.io/crates/chrono [`time` crate]: https://crates.io/crates/time [RUSTSEC-2020-0159]: https://rustsec.org/advisories/RUSTSEC-2020-0159.html
hawkw
added a commit
that referenced
this pull request
Oct 22, 2021
# 0.3.0 (Oct 22, 2021) 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]) - 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! [#1320]: #1320 [#1673]: #1673 [#1674]: #1674 [#1646]: #1646 [#1647]: #1647 [#1648]: #1648 [#1649]: #1649 [#1660]: #1660 [#1661]: #1661 [#1431]: #1431 [#1434]: #1434 [#781]: #781 [`chrono` crate]: https://crates.io/crates/chrono [`time` crate]: https://crates.io/crates/time [RUSTSEC-2020-0159]: https://rustsec.org/advisories/RUSTSEC-2020-0159.html Signed-off-by: Eliza Weisman <eliza@buoyant.io>
davidbarsky
pushed a commit
to tokio-rs/tracing-opentelemetry
that referenced
this pull request
Mar 21, 2023
# 0.3.0 (Oct 22, 2021) 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]) - 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! [#1320]: tokio-rs/tracing#1320 [#1673]: tokio-rs/tracing#1673 [#1674]: tokio-rs/tracing#1674 [#1646]: tokio-rs/tracing#1646 [#1647]: tokio-rs/tracing#1647 [#1648]: tokio-rs/tracing#1648 [#1649]: tokio-rs/tracing#1649 [#1660]: tokio-rs/tracing#1660 [#1661]: tokio-rs/tracing#1661 [#1431]: tokio-rs/tracing#1431 [#1434]: tokio-rs/tracing#1434 [#781]: tokio-rs/tracing#781 [`chrono` crate]: https://crates.io/crates/chrono [`time` crate]: https://crates.io/crates/time [RUSTSEC-2020-0159]: https://rustsec.org/advisories/RUSTSEC-2020-0159.html Signed-off-by: Eliza Weisman <eliza@buoyant.io>
kaffarell
pushed a commit
to kaffarell/tracing
that referenced
this pull request
May 22, 2024
…kio-rs#1646) ## Motivation Currently, `tracing-subscriber` supports the `chrono` crate for timestamp formatting, via a default-on feature flag. When this code was initially added to `tracing-subscriber`, the `time` crate did not have support for the timestamp formatting options we needed. Unfortunately, the `chrono` crate's maintainance status is now in question (see tokio-rs#1598). Furthermore, `chrono` depends on version 0.1 of the `time` crate, which contains a security vulnerability (https://rustsec.org/advisories/RUSTSEC-2020-0071.html). This vulnerability is fixed in more recent releases of `time`, but `chrono` still uses v0.1. ## Solution Fortunately, the `time` crate now has its own timestamp formatting support. This branch replaces the `ChronoLocal` and `ChronoUtc` timestamp formatters with new `LocalTime` and `UtcTime` formatters. These formatters use the `time` crate's formatting APIs rather than `chrono`'s. This removes the vulnerable dependency on `time` 0.1 Additionally, the new `time` APIs are feature flagged as an _opt-in_ feature, rather than as an _opt-out_ feature. This should make it easier to avoid accidentally depending on the `time` crate when more sophisticated timestamp formatting is _not_ required. In a follow-up branch, we could also add support for `humantime` as an option for timestamp formatting. Naturally, since this removes existing APIs, this is a breaking change, and will thus require publishing `tracing-subscriber` 0.3. We'll want to do some other breaking changes as well. Fixes tokio-rs#1598.
kaffarell
pushed a commit
to kaffarell/tracing
that referenced
this pull request
May 22, 2024
This PR continues the work started in tokio-rs#1646 to replace `chrono` with `time`. I'll refer to @hawkw's motivation: > Currently, `tracing-subscriber` supports the `chrono` crate for > timestamp formatting, via a default-on feature flag. When this code > was initially added to `tracing-subscriber`, the `time` crate did not > have support for the timestamp formatting options we needed. > > Unfortunately, the `chrono` crate's maintenance status is now in > question (see tokio-rs#1598). Furthermore, `chrono` depends on version 0.1 of > the `time` crate, which contains a security vulnerability > (https://rustsec.org/advisories/RUSTSEC-2020-0071.html). This > vulnerability is fixed in more recent releases of `time`, but `chrono` > still uses v0.1. I've replaced chrono with time 0.3. Unfortunately, some of chrono's builders for DateTimes are not present in `time`, which required the usage of `macro_rules!` macros to construct some of the hard-coded times. I also took the opportunity to tidy some of the tests and change the internal representation of `Rotation::NEVER` from year 9,999 to an `Option::None`. This branch changes `tracing-appender`'s MSRV from Rust 1.42 to Rust 1.51, the MSRV for the `time` crate when certain required feature flags are enabled. This does *not* effect the MSRV for other crates in this repository.
kaffarell
pushed a commit
to kaffarell/tracing
that referenced
this pull request
May 22, 2024
# 0.3.0 (Oct 22, 2021) 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` ([tokio-rs#1674]) - Removed `Layer` impl for `Arc<L: Layer<S>>` and `Arc<dyn Layer<S> + ...>` ([tokio-rs#1649]) - Replaced the [`chrono` crate] with the [`time` crate] for timestamp formatting, to resolve [RUSTSEC-2020-0159] ([tokio-rs#1646]) - Removed `json` and `env-filter` from default features. They must now be enabled explictly ([tokio-rs#1647]) - Changed `FormatEvent::format_event` and `FormatFields::format_fields` trait methods to take a `Writer` type, rather than a `&mut dyn fmt::Write` trait object ([tokio-rs#1661]) - Changed the signature of the `MakeWriter` trait by adding a lifetime parameter ([tokio-rs#781]) ### Changed - **layer**: Renamed `Layer::new_span` to `Layer::on_new_span` ([tokio-rs#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 ([tokio-rs#1661]) - **json**, **env-filter**: `json` and `env-filter` feature flags are no longer enabled by default ([tokio-rs#1647]) ### Removed - Removed deprecated `CurrentSpan` type ([tokio-rs#1320]) - **registry**: Removed deprecated `SpanRef::parents` iterator, replaced by `SpanRef::scope` in [tokio-rs#1431] ([tokio-rs#1648)]) - **layer**: Removed deprecated `Context::scope` iterator, replaced by `Context::span_scope` and `Context::event_scope` in [tokio-rs#1431] and [tokio-rs#1434] ([tokio-rs#1648)]) - **layer**: Removed `Layer` impl for `Arc<L: Layer<S>>` and `Arc<dyn Layer<S> + ...>`. These interfere with per-layer filtering. ([tokio-rs#1649]) - **fmt**: Removed deprecated `LayerBuilder` type ([tokio-rs#1673]) - **fmt**: Removed `fmt::Layer::on_event` (renamed to `fmt::Layer::fmt_event`) ([tokio-rs#1673]) - **fmt**, **chrono**: Removed the `chrono` feature flag and APIs for using the [`chrono` crate] for timestamp formatting ([tokio-rs#1646]) ### Added - **fmt**, **time**: `LocalTime` and `UtcTime` types for formatting timestamps using the [`time` crate] ([tokio-rs#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`. ([tokio-rs#781]) - **env-filter**: Documentation improvements ([tokio-rs#1637]) - Support for some APIs on `#![no_std]` targets, by disabling the `std` feature flag ([tokio-rs#1660]) Thanks to @Folyd and @nmathewson for contributing to this release! [tokio-rs#1320]: tokio-rs#1320 [tokio-rs#1673]: tokio-rs#1673 [tokio-rs#1674]: tokio-rs#1674 [tokio-rs#1646]: tokio-rs#1646 [tokio-rs#1647]: tokio-rs#1647 [tokio-rs#1648]: tokio-rs#1648 [tokio-rs#1649]: tokio-rs#1649 [tokio-rs#1660]: tokio-rs#1660 [tokio-rs#1661]: tokio-rs#1661 [tokio-rs#1431]: tokio-rs#1431 [tokio-rs#1434]: tokio-rs#1434 [tokio-rs#781]: tokio-rs#781 [`chrono` crate]: https://crates.io/crates/chrono [`time` crate]: https://crates.io/crates/time [RUSTSEC-2020-0159]: https://rustsec.org/advisories/RUSTSEC-2020-0159.html Signed-off-by: Eliza Weisman <eliza@buoyant.io>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Currently,
tracing-subscriber
supports thechrono
crate fortimestamp formatting, via a default-on feature flag. When this code was
initially added to
tracing-subscriber
, thetime
crate did not havesupport for the timestamp formatting options we needed.
Unfortunately, the
chrono
crate's maintainance status is now inquestion (see #1598). Furthermore,
chrono
depends on version 0.1 ofthe
time
crate, which contains a security vulnerability(https://rustsec.org/advisories/RUSTSEC-2020-0071.html). This
vulnerability is fixed in more recent releases of
time
, butchrono
still uses v0.1.
Solution
Fortunately, the
time
crate now has its own timestamp formattingsupport.
This branch replaces the
ChronoLocal
andChronoUtc
timestampformatters with new
LocalTime
andUtcTime
formatters. Theseformatters use the
time
crate's formatting APIs rather thanchrono
's. This removes the vulnerable dependency ontime
0.1Additionally, the new
time
APIs are feature flagged as an opt-infeature, rather than as an opt-out feature. This should make it easier
to avoid accidentally depending on the
time
crate when moresophisticated timestamp formatting is not required.
In a follow-up branch, we could also add support for
humantime
as anoption for timestamp formatting.
Naturally, since this removes existing APIs, this is a breaking change,
and will thus require publishing
tracing-subscriber
0.3. We'll want todo some other breaking changes as well.
Fixes #1598.