Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

A logger that prints all messages with a readable output format.

The output format is based on the format used by [Supervisord](https://github.com/Supervisor/supervisor), with timestamps in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339) format.
The output format is based on the format used by [Supervisord](https://github.com/Supervisor/supervisor), with timestamps in default [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339) format and custom format.

* [Source on GitHub](https://github.com/borntyping/rust-simple_logger)
* [Packages on Crates.io](https://crates.io/crates/simple_logger)
Expand Down
27 changes: 25 additions & 2 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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.
///
Expand Down Expand Up @@ -111,6 +113,7 @@ impl SimpleLogger {

#[cfg(feature = "timestamps")]
timestamps: Timestamps::Utc,
timeformat: TIMESTAMP_FORMAT_OFFSET,

#[cfg(feature = "colored")]
colors: true,
Expand Down Expand Up @@ -265,6 +268,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.
Expand Down Expand Up @@ -426,15 +449,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::UtcOffset(offset) => format!(
"{} ",
OffsetDateTime::now_utc()
.to_offset(offset)
.format(&TIMESTAMP_FORMAT_OFFSET)
.format(&self.timeformat)
.unwrap()
),
}
Expand Down