libwasm/src/logger/mod.rs

68 lines
1.1 KiB
Rust

#![allow(unused_macros)]
#[repr(C)]
pub enum LogLevel {
Error,
Warn,
Info,
Debug,
Trace,
}
extern "C" {
pub fn host_log(log_level: LogLevel, log_message: *const u8, log_message_len: u32);
}
macro_rules! log {
($a:expr, $b:expr) => {{
let log_level: LogLevel = $a;
let log_message: &[u8] = $b;
let pointer = log_message.as_ptr();
unsafe {
$crate::logger::host_log(log_level, pointer, log_message.len() as u32);
}
}};
}
macro_rules! debug {
($a:expr) => {
use crate::logger::{LogLevel::*, *};
log!(Debug, $a);
};
}
macro_rules! error {
($a:expr) => {
use crate::logger::{LogLevel::*, *};
log!(Error, $a);
};
}
macro_rules! trace {
($a:expr) => {
use crate::logger::*;
log!(Trace, $a);
};
}
macro_rules! warn {
($a:expr) => {
use crate::logger::{LogLevel::*, *};
log!(Warn, $a);
};
}
macro_rules! info {
($a:expr) => {
use crate::logger::{LogLevel::*, *};
log!(Info, $a);
};
}