blob: 306a0d530521d5338e693b0898208b94df75b71e (
plain)
use alloc::string::ToString;
use log::{LevelFilter, Log, Metadata, Record, SetLoggerError, set_logger, set_max_level};
mod tortuise {
use log::Level;
#[link(wasm_import_module = "tortuise")]
unsafe extern "C" {
pub unsafe fn log(severity: Level, message: *const u8, length: usize);
}
}
static LOG: TortuiseLogger = TortuiseLogger;
pub struct TortuiseLogger;
impl TortuiseLogger {
pub fn init() -> Result<(), SetLoggerError> {
set_logger(&LOG).map(|()| set_max_level(LevelFilter::Trace))
}
}
impl Log for TortuiseLogger {
fn enabled(&self, _: &Metadata) -> bool {
true
}
fn log(&self, record: &Record) {
let message = record.args().to_string();
unsafe {
tortuise::log(record.level(), message.as_ptr(), message.len());
}
}
fn flush(&self) {}
}
|