the aliasing svg renderer
Diffstat (limited to 'src/logger.rs')
| -rw-r--r-- | src/logger.rs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/logger.rs b/src/logger.rs new file mode 100644 index 0000000..52f11c9 --- /dev/null +++ b/src/logger.rs @@ -0,0 +1,40 @@ +use comat::{cformat_args, cprintln}; +use log::{Level, Metadata, Record}; + +pub struct Logger {} + +pub fn init(level: Level) { + static LOGGER: Logger = Logger {}; + log::set_logger(&LOGGER) + .map(|()| log::set_max_level(level.to_level_filter())) + .unwrap(); +} + +impl log::Log for Logger { + fn enabled(&self, _: &Metadata) -> bool { + true + } + + fn log(&self, record: &Record) { + match record.level() { + Level::Info => println!("{}", record.args()), + l => { + cprintln!( + "[{} {:bold_blue}:{:blue}] {}", + match l { + Level::Error => cformat_args!("{bold_red}err{reset}"), + Level::Warn => cformat_args!("{bold_yellow}wrn{reset}"), + Level::Trace => cformat_args!("{magenta}trc{reset}"), + Level::Debug => cformat_args!("{green}dbg{reset}"), + Level::Info => cformat_args!("{blue}inf{reset}"), + }, + record.file().unwrap_or("<source>"), + record.line().unwrap_or(0), + record.args(), + ) + } + } + } + + fn flush(&self) {} +} |