diff --git a/tracing-subscriber/Cargo.toml b/tracing-subscriber/Cargo.toml index edc7f23468..c23fd8f9b0 100644 --- a/tracing-subscriber/Cargo.toml +++ b/tracing-subscriber/Cargo.toml @@ -51,7 +51,7 @@ once_cell = { optional = true, version = "1.13.0" } # fmt tracing-log = { path = "../tracing-log", version = "0.2", optional = true, default-features = false, features = ["log-tracer", "std"] } nu-ansi-term = { version = "0.46.0", optional = true } -time = { version = "0.3.2", features = ["formatting"], optional = true } +time = { version = "0.3.38", features = ["formatting"], optional = true } # only required by the json feature serde_json = { version = "1.0.82", optional = true } @@ -76,7 +76,7 @@ regex = { version = "1.6.0", default-features = false, features = ["std"] } tracing-futures = { path = "../tracing-futures", version = "0.3", default-features = false, features = ["std-future", "std"] } tokio = { version = "1.20.0", features = ["rt", "macros"] } # Enable the `time` crate's `macros` feature, for examples. -time = { version = "0.3.2", features = ["formatting", "macros"] } +time = { version = "0.3.38", features = ["formatting", "macros"] } [badges] maintenance = { status = "experimental" } diff --git a/tracing-subscriber/src/fmt/time/mod.rs b/tracing-subscriber/src/fmt/time/mod.rs index 2838120798..1105cbcc44 100644 --- a/tracing-subscriber/src/fmt/time/mod.rs +++ b/tracing-subscriber/src/fmt/time/mod.rs @@ -13,7 +13,7 @@ mod time_crate; pub use time_crate::UtcTime; #[cfg(feature = "local-time")] -#[cfg_attr(docsrs, doc(cfg(all(unsound_local_offset, feature = "local-time"))))] +#[cfg_attr(docsrs, doc(cfg(feature = "local-time")))] pub use time_crate::LocalTime; /// [`chrono`]-based implementation for [`FormatTime`]. diff --git a/tracing-subscriber/src/fmt/time/time_crate.rs b/tracing-subscriber/src/fmt/time/time_crate.rs index 656677e8d4..3856ce118a 100644 --- a/tracing-subscriber/src/fmt/time/time_crate.rs +++ b/tracing-subscriber/src/fmt/time/time_crate.rs @@ -1,31 +1,17 @@ use crate::fmt::{format::Writer, time::FormatTime, writer::WriteAdaptor}; use std::fmt; -use time::{format_description::well_known, formatting::Formattable, OffsetDateTime}; +use time::{format_description::well_known, formatting::Formattable, OffsetDateTime, UtcDateTime}; /// Formats the current [local time] using a [formatter] from the [`time` crate]. /// /// To format the current [UTC time] instead, use the [`UtcTime`] type. /// -///
-///
-///     Warning: The time
-///     crate must be compiled with --cfg unsound_local_offset in order to use
-///     local timestamps. When this cfg is not enabled, local timestamps cannot be recorded, and
-///     events will be logged without timestamps.
-///
-///    See the time
-///    documentation for more details.
-/// 
-/// /// [local time]: https://docs.rs/time/0.3/time/struct.OffsetDateTime.html#method.now_local /// [UTC time]: https://docs.rs/time/0.3/time/struct.OffsetDateTime.html#method.now_utc /// [formatter]: https://docs.rs/time/0.3/time/formatting/trait.Formattable.html /// [`time` crate]: https://docs.rs/time/0.3/time/ #[derive(Clone, Debug)] -#[cfg_attr( - docsrs, - doc(cfg(all(unsound_local_offset, feature = "time", feature = "local-time"))) -)] +#[cfg_attr(docsrs, doc(cfg(all(feature = "time", feature = "local-time"))))] #[cfg(feature = "local-time")] pub struct LocalTime { format: F, @@ -76,19 +62,6 @@ impl LocalTime { /// [`time` crate] with the provided provided format. The format may be any /// type that implements the [`Formattable`] trait. /// - /// - ///
- ///
-    ///     Warning: The 
-    ///     time crate must be compiled with --cfg
-    ///     unsound_local_offset in order to use local timestamps. When this
-    ///     cfg is not enabled, local timestamps cannot be recorded, and
-    ///     events will be logged without timestamps.
-    ///
-    ///    See the 
-    ///    time documentation for more details.
-    /// 
- /// /// Typically, the format will be a format description string, or one of the /// `time` crate's [well-known formats]. /// @@ -163,7 +136,7 @@ where { fn format_time(&self, w: &mut Writer<'_>) -> fmt::Result { let now = OffsetDateTime::now_local().map_err(|_| fmt::Error)?; - format_datetime(now, w, &self.format) + format_offsetdatetime(now, w, &self.format) } } @@ -261,7 +234,7 @@ impl UtcTime { /// # drop(collector); /// ``` /// - /// [UTC time]: https://docs.rs/time/latest/time/struct.OffsetDateTime.html#method.now_utc + /// [UTC time]: https://docs.rs/time/latest/time/struct.UtcDateTime.html#method.now /// [`time` crate]: https://docs.rs/time/0.3/time/ /// [`Formattable`]: https://docs.rs/time/0.3/time/formatting/trait.Formattable.html /// [well-known formats]: https://docs.rs/time/0.3/time/format_description/well_known/index.html @@ -278,7 +251,7 @@ where F: Formattable, { fn format_time(&self, w: &mut Writer<'_>) -> fmt::Result { - format_datetime(OffsetDateTime::now_utc(), w, &self.format) + format_utcdatetime(UtcDateTime::now(), w, &self.format) } } @@ -291,7 +264,7 @@ where } } -fn format_datetime( +fn format_offsetdatetime( now: OffsetDateTime, into: &mut Writer<'_>, fmt: &impl Formattable, @@ -301,3 +274,14 @@ fn format_datetime( .map_err(|_| fmt::Error) .map(|_| ()) } + +fn format_utcdatetime( + now: UtcDateTime, + into: &mut Writer<'_>, + fmt: &impl Formattable, +) -> fmt::Result { + let mut into = WriteAdaptor::new(into); + now.format_into(&mut into, fmt) + .map_err(|_| fmt::Error) + .map(|_| ()) +}