diff --git a/tracing-appender/src/rolling.rs b/tracing-appender/src/rolling.rs index d82646933a..3d46999e5d 100644 --- a/tracing-appender/src/rolling.rs +++ b/tracing-appender/src/rolling.rs @@ -34,7 +34,7 @@ use std::{ path::{Path, PathBuf}, sync::atomic::{AtomicUsize, Ordering}, }; -use time::{format_description, Date, Duration, OffsetDateTime, Time}; +use time::{format_description, Date, Duration, OffsetDateTime, PrimitiveDateTime, Time}; mod builder; pub use builder::{Builder, InitError}; @@ -602,7 +602,24 @@ impl Inner { return None; } - let created = metadata.created().ok()?; + let created = metadata.created().ok().or_else(|| { + let datetime = if self.log_filename_prefix.is_none() { + PrimitiveDateTime::parse( + filename.split('.').collect::>()[0], + &self.date_format, + ) + .ok()? + .assume_utc() + } else { + PrimitiveDateTime::parse( + filename.split('.').collect::>()[1], + &self.date_format, + ) + .ok()? + .assume_utc() + }; + Some(datetime.into()) + })?; Some((entry, created)) }) .collect::>()