extern crate log;
extern crate wasm_bindgen;
extern crate web_sys;
use wasm_bindgen::prelude::*;
use log::{Level, Log, Metadata, Record, SetLoggerError};
struct WebConsoleLogger;
static LOGGER: WebConsoleLogger = WebConsoleLogger;
impl Log for WebConsoleLogger {
fn enabled(&self, _metadata: &Metadata) -> bool {
true
}
fn log(&self, record: &Record) {
web_sys::console::log_1(&JsValue::from_str(
format!(
"{:<5} [{}] {}",
record.level().to_string(),
record.module_path().unwrap_or_default(),
record.args()
).as_str(),
));
}
fn flush(&self) {}
}
pub fn init_with_level(level: Level) -> Result<(), SetLoggerError> {
log::set_logger(&LOGGER)?;
log::set_max_level(level.to_level_filter());
Ok(())
}
pub fn init() -> Result<(), SetLoggerError> {
init_with_level(Level::Trace)
}
pub fn set_level(level: Level) {
log::set_max_level(level.to_level_filter());
}