loggy-banner
Simple thread-safe logging tool with dynamic log level configuration.

Logging works in an hierarchy from Info > Warn > Error. If the log level is set to one of these only self and lower would log. Example: ```r LogLevel::Info = Info, Warn, Error LogLevel::Warn = Warn, Error LogLevel::Error = Error ``` You can also use both info/warn/error() and log(LogLevel::Level, message) for logging depending on your preference # Quickstart ```rs use loggy_neko::prelude::*; fn main() { info!("Hello World!"); } ``` # Example usage ```rs use loggy::{LogLevel, LOGGER}; #[derive(Debug)] struct TestVec { array: Vec, } fn main() { // * Standard use LOGGER.set_log_level(LogLevel::Error); LOGGER.info("Info message that wont display!"); LOGGER.set_log_level(LogLevel::Info); LOGGER.info("LogLevel set to Info!"); LOGGER.warn("Warn message!"); LOGGER.debug("Debug message!"); // * Or using macros info!("Info message using macro"); LOGGER.set_log_level(LogLevel::Error); LOGGER.info("LogLevel set to Error!"); warn!("Warn using macro that wont display!"); error!("Error using macro"); LOGGER.set_log_level(LogLevel::Info); LOGGER.info("LogLevel set to Info!"); info!("Hello World!"); let test_vec = TestVec { array: vec!["Hello".to_string(), "World!".to_string()], }; info!(dbg!(format!("{:?}", test_vec).as_str())); warn!("Whoops!"); debug!("Debug message via macro!"); info!("Hello World!"); } ``` ## Outputs: log preview screenshot # Roadmap - [ ] More configs: Time style, custom colors and which items to display - [ ] Display which function ran and at which line.