summaryrefslogtreecommitdiff
path: root/platforms/tortuise-script-wasm/src/log.rs
diff options
context:
space:
mode:
authorMica White <botahamec@outlook.com>2026-10-26 10:52:04 -0400
committerMica White <botahamec@outlook.com>2026-10-26 10:58:46 -0400
commitec40f6e3acc7874b82709ab81b254c741529fdff (patch)
treee3dfdc315bd0c6f1d2efcf442c2cfb3317d6810f /platforms/tortuise-script-wasm/src/log.rs
parente3c5839159903658a667f789963f20a31567b25c (diff)
Finish engineHEADmain
Diffstat (limited to 'platforms/tortuise-script-wasm/src/log.rs')
-rw-r--r--platforms/tortuise-script-wasm/src/log.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/platforms/tortuise-script-wasm/src/log.rs b/platforms/tortuise-script-wasm/src/log.rs
new file mode 100644
index 0000000..306a0d5
--- /dev/null
+++ b/platforms/tortuise-script-wasm/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) {}
+}