use std::sync::atomic::{AtomicBool, Ordering};
static STAMP: AtomicBool = AtomicBool::new(false);
pub(crate) fn enable_timestamps() {
STAMP.store(true, Ordering::Relaxed);
}
pub(crate) fn render(stamped: bool, now_secs: i64, msg: &str) -> String {
if stamped {
format!("{} {msg}", crate::usage::epoch_secs_to_iso(now_secs))
} else {
msg.to_string()
}
}
pub(crate) fn line(args: std::fmt::Arguments<'_>) {
eprintln!(
"{}",
render(
STAMP.load(Ordering::Relaxed),
crate::usage::now_epoch_secs(),
&args.to_string(),
)
);
}
macro_rules! logline {
($($arg:tt)*) => {
$crate::logline::line(::std::format_args!($($arg)*))
};
}
pub(crate) use logline;
#[cfg(test)]
#[path = "../tests/inline/logline.rs"]
mod tests;