diff --git a/Cargo.toml b/Cargo.toml index 0b651bd..950a6d0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,13 +29,13 @@ members = [ default = [] log = [] -log_debug = ["log"] +log_debug = ["log", "chrono"] obfuscate_aes = ["ush-obfuscate/obfuscate_aes"] obfuscate_ref = ["ush-obfuscate/obfuscate_ref"] [dependencies] -chrono = { workspace = true } +chrono = { workspace = true, optional = true } serde = { workspace = true } serde_json = { workspace = true } diff --git a/src/logger/log_enabled.rs b/src/logger/log_enabled.rs index 680a578..4564680 100644 --- a/src/logger/log_enabled.rs +++ b/src/logger/log_enabled.rs @@ -12,7 +12,12 @@ macro_rules! log { #[cfg(not(feature = "log_debug"))] None, - std::time::SystemTime::now(), + #[cfg(feature = "log_debug")] + Some(std::time::SystemTime::now()), + #[cfg(not(feature = "log_debug"))] + None, + + log_result ); }}; @@ -28,7 +33,11 @@ macro_rules! log { #[cfg(not(feature = "log_debug"))] None, - std::time::SystemTime::now(), + #[cfg(feature = "log_debug")] + Some(std::time::SystemTime::now()), + #[cfg(not(feature = "log_debug"))] + None, + log_result ); }}; diff --git a/src/logger/mod.rs b/src/logger/mod.rs index 8c9cbf0..710eeaf 100644 --- a/src/logger/mod.rs +++ b/src/logger/mod.rs @@ -28,7 +28,7 @@ pub struct Record { log_level: LogLevel, location: Option, // line: u32, - time: SystemTime, + time: Option, message: String, } @@ -61,7 +61,7 @@ pub fn set_logger(logger: &'static dyn Logger) { pub fn add_record( log_level: LogLevel, location: Option, - time: SystemTime, + time: Option, message: String, ) { logger().log(Record { diff --git a/src/logger/pretty_logger.rs b/src/logger/pretty_logger.rs index d843870..3cf5101 100644 --- a/src/logger/pretty_logger.rs +++ b/src/logger/pretty_logger.rs @@ -1,5 +1,3 @@ -use chrono::{DateTime, Utc}; - use crate::logger::{LogLevel, Logger, Record}; pub struct PrettyLogger { @@ -35,19 +33,25 @@ pub fn log(message: &Record) { LogLevel::Error => format!("{ERROR_COLOR}ERR!"), }; - let date: DateTime = message.time.into(); - let date = date.to_rfc2822().to_string(); + match (message.time, &message.location) { + (None, None) => { + println!("{} {WHITE}{}", log_level, message.message,); + } - let location = if let Some(ref location) = message.location { - location - } else { - &String::new() - }; + #[cfg(feature = "log_debug")] + (Some(time), Some(location)) => { + use chrono::{DateTime, Utc}; - println!( - "{OFF_WHITE}[{TIME_COLOR}{}{OFF_WHITE}] {} {WHITE}{} {GREY}{}{WHITE}", - date, log_level, message.message, location - ); + let date: DateTime = time.into(); + + println!( + "{OFF_WHITE}[{TIME_COLOR}{}{OFF_WHITE}] {} {WHITE}{} {GREY}{}{WHITE}", + date, log_level, message.message, location + ); + } + + _ => unreachable!("All debug fields must be present or removed."), + } } impl PrettyLogger { diff --git a/ush-payload/src/main.rs b/ush-payload/src/main.rs index e4f097c..a2dcbd6 100644 --- a/ush-payload/src/main.rs +++ b/ush-payload/src/main.rs @@ -1,12 +1,12 @@ #![macro_use] extern crate unshell; -use unshell::{info, logger::PrettyLogger, obfuscate::sym, tree::Tree}; +use unshell::{info, logger::PrettyLogger, obfuscate::sym}; fn main() { PrettyLogger::init(); - let mut manager = Tree::new(); + // let mut manager = Tree::new(); // manager.init_logger(); println!("{}", sym!("TEST"));