Skip to content

Instantly share code, notes, and snippets.

@lilly-lizard
Last active March 13, 2023 03:07
Show Gist options
  • Save lilly-lizard/178cd36aa72d6b61e46f4172ecde4037 to your computer and use it in GitHub Desktop.
Save lilly-lizard/178cd36aa72d6b61e46f4172ecde4037 to your computer and use it in GitHub Desktop.
Simple custom rust logging (using `log` and `colored` crates)
use colored::{Color, Colorize};
use log::{Level, Metadata, Record};
pub struct ConsoleLogger;
impl log::Log for ConsoleLogger {
fn enabled(&self, metadata: &Metadata) -> bool {
metadata.level() <= Level::Info
}
fn log(&self, record: &Record) {
if self.enabled(record.metadata()) {
let (level, color) = match record.level() {
Level::Error => ("[ERROR]", Color::Red),
Level::Warn => ("[WARN ]", Color::Yellow),
Level::Info => ("[INFO ]", Color::Blue),
Level::Debug => ("[DEBUG]", Color::Magenta),
Level::Trace => ("[TRACE]", Color::White),
};
println!(
"{} {} - {}",
level.color(color),
record.module_path().unwrap_or("...").color(color),
record.args()
);
}
}
fn flush(&self) {}
}
fn main() {
static CONSOLE_LOGGER: ConsoleLogger = ConsoleLogger;
if let Err(e) = log::set_logger(&CONSOLE_LOGGER) {
println!("Failed to initialize logger: {:?}", e);
};
log::set_max_level(LevelFilter::Info);
warn!("loooooooog");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment