pub const ERROR_LOG: &str = "Can't log to stderr";
#[cfg(feature = "colored")]
pub mod colors {
use crossterm::style::Color;
pub const GREEN: Color = Color::Green;
pub const WHITE: Color = Color::White;
pub const RED: Color = Color::Red;
pub const YELLOW: Color = Color::Yellow;
pub const GREY: Color = Color::Grey;
}
#[allow(clippy::ptr_arg)]
pub fn datetime(_input: &mut String) {
#[cfg(any(feature = "local_date", feature = "local_time"))]
{
use time::OffsetDateTime;
if let Ok(now) = OffsetDateTime::now_local() {
if cfg!(feature = "local_date") {
let date = format!(" on {}/{}/{}", now.year(), now.month(), now.day());
_input.push_str(&date);
}
if cfg!(feature = "local_time") {
let time = format!(" at {}:{}:{}", now.hour(), now.minute(), now.second());
_input.push_str(&time);
}
}
}
}
#[cfg(feature = "context")]
#[macro_export]
macro_rules! context {
($input:tt) => {
$input.push_str(&format!(" in {}:{}", file!(), line!()))
};
}
#[cfg(not(feature = "context"))]
#[macro_export]
macro_rules! context {
($input:tt) => {};
}
#[macro_export]
macro_rules! log {
($color:tt, $prefix:tt, $($args:tt)+) => {{
let mut prefix = String::from($prefix);
plog::macros::datetime(&mut prefix);
plog::context!(prefix);
plog::core_log!($color, { prefix.as_ref() }, $($args)+).expect(plog::macros::ERROR_LOG)
}}
}
#[cfg(feature = "colored")]
#[macro_export]
macro_rules! core_log {
($color:tt, $prefix:expr, $($args:tt)+) => {
plog::log(plog::macros::colors::$color, $prefix, format!($($args)+))
}
}
#[cfg(not(feature = "colored"))]
#[macro_export]
macro_rules! core_log {
($color:tt, $prefix:tt, $($args:tt)+) => {
plog::log($prefix, format!($($args)+))
}
}
#[macro_export]
macro_rules! debug {
($($args:tt)+) => {{
if cfg!(debug_assertions) {
plog::log!(GREY, "DEBG", $($args)+)
}
}}
}
#[macro_export]
macro_rules! info {
($($args:tt)+) => {{
plog::log!(WHITE, "INFO", $($args)+)
}}
}
#[macro_export]
macro_rules! warn {
($($args:tt)+) => {{
plog::log!(YELLOW, "WARN", $($args)+)
}}
}
#[macro_export]
macro_rules! error {
($($args:tt)+) => {{
plog::log!(RED, "ERRO", $($args)+)
}}
}
#[macro_export]
macro_rules! ok {
($($args:tt)+) => {
plog::log!(GREEN, "OKAY", $($args)+)
}
}