|
@@ -81,6 +81,8 @@ pub struct SimpleLogger {
|
|
|
/// This field is only available if the `timestamps` feature is enabled.
|
|
|
#[cfg(feature = "timestamps")]
|
|
|
timestamps: Timestamps,
|
|
|
+ #[cfg(feature = "timestamps")]
|
|
|
+ timeformat: &'static [FormatItem<'static>],
|
|
|
|
|
|
/// Whether to use color output or not.
|
|
|
///
|
|
@@ -111,6 +113,8 @@ impl SimpleLogger {
|
|
|
|
|
|
#[cfg(feature = "timestamps")]
|
|
|
timestamps: Timestamps::Utc,
|
|
|
+ #[cfg(feature = "timestamps")]
|
|
|
+ timeformat: time::macros::format_description!(""),
|
|
|
|
|
|
#[cfg(feature = "colored")]
|
|
|
colors: true,
|
|
@@ -265,6 +269,26 @@ impl SimpleLogger {
|
|
|
self
|
|
|
}
|
|
|
|
|
|
+ /// Custom timestamps format
|
|
|
+ ///
|
|
|
+ /// The syntax for the format_description macro can be found in the
|
|
|
+ /// [`time` crate book](https://time-rs.github.io/book/api/format-description.html).
|
|
|
+ ///
|
|
|
+ /// ```
|
|
|
+ /// simple_logger::SimpleLogger::new()
|
|
|
+ /// .with_level(log::LevelFilter::Debug)
|
|
|
+ /// .env()
|
|
|
+ /// .with_custom_timestamps(time::macros::format_description!("[year]-[month]-[day] [hour]:[minute]:[second]"))
|
|
|
+ /// .init()
|
|
|
+ /// .unwrap();
|
|
|
+ /// ```
|
|
|
+ #[must_use = "You must call init() to begin logging"]
|
|
|
+ #[cfg(feature = "timestamps")]
|
|
|
+ pub fn with_custom_timestamps(mut self, timeformat: &'static [FormatItem<'static>]) -> SimpleLogger {
|
|
|
+ self.timeformat = timeformat;
|
|
|
+ self
|
|
|
+ }
|
|
|
+
|
|
|
/// Don't display any timestamps.
|
|
|
///
|
|
|
/// This method is only available if the `timestamps` feature is enabled.
|
|
@@ -321,6 +345,17 @@ impl SimpleLogger {
|
|
|
#[cfg(all(windows, feature = "colored"))]
|
|
|
set_up_color_terminal();
|
|
|
|
|
|
+ // Set default timestamp format
|
|
|
+ #[cfg(feature = "timestamps")]
|
|
|
+ if self.timeformat.len() <= 0 {
|
|
|
+ self.timeformat = match self.timestamps {
|
|
|
+ Timestamps::Local => TIMESTAMP_FORMAT_OFFSET,
|
|
|
+ Timestamps::Utc => TIMESTAMP_FORMAT_UTC,
|
|
|
+ Timestamps::UtcOffset(_) => TIMESTAMP_FORMAT_OFFSET,
|
|
|
+ _ => self.timeformat,
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
/* Sort all module levels from most specific to least specific. The length of the module
|
|
|
* name is used instead of its actual depth to avoid module name parsing.
|
|
|
*/
|
|
@@ -426,15 +461,15 @@ impl Log for SimpleLogger {
|
|
|
"behaviour. See the time crate's documentation for more information. ",
|
|
|
"(https://time-rs.github.io/internal-api/time/index.html#feature-flags)"
|
|
|
))
|
|
|
- .format(&TIMESTAMP_FORMAT_OFFSET)
|
|
|
+ .format(&self.timeformat)
|
|
|
.unwrap()
|
|
|
),
|
|
|
- Timestamps::Utc => format!("{} ", OffsetDateTime::now_utc().format(&TIMESTAMP_FORMAT_UTC).unwrap()),
|
|
|
+ Timestamps::Utc => format!("{} ", OffsetDateTime::now_utc().format(&self.timeformat).unwrap()),
|
|
|
Timestamps::UtcOffset(offset) => format!(
|
|
|
"{} ",
|
|
|
OffsetDateTime::now_utc()
|
|
|
.to_offset(offset)
|
|
|
- .format(&TIMESTAMP_FORMAT_OFFSET)
|
|
|
+ .format(&self.timeformat)
|
|
|
.unwrap()
|
|
|
),
|
|
|
}
|