From e3c5839159903658a667f789963f20a31567b25c Mon Sep 17 00:00:00 2001 From: Mica White Date: Thu, 30 Jul 2026 07:34:24 -0400 Subject: Initial commit --- src/log.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/log.rs (limited to 'src/log.rs') diff --git a/src/log.rs b/src/log.rs new file mode 100644 index 0000000..306a0d5 --- /dev/null +++ b/src/log.rs @@ -0,0 +1,36 @@ +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) {} +} -- cgit v1.3.1