pub mod level {
pub const ERROR: i32 = 0;
pub const WARN: i32 = 1;
pub const INFO: i32 = 2;
pub const DEBUG: i32 = 3;
pub const TRACE: i32 = 4;
}
#[cfg(target_arch = "wasm32")]
#[inline]
pub fn log_at_level(level: i32, message: &str) {
unsafe {
super::ffi::log(level, message.as_ptr() as i32, message.len() as i32);
}
}
#[cfg(not(target_arch = "wasm32"))]
#[inline]
pub fn log_at_level(level: i32, message: &str) {
let level_str = match level {
0 => "ERROR",
1 => "WARN",
2 => "INFO",
3 => "DEBUG",
_ => "TRACE",
};
eprintln!("[{}] {}", level_str, message);
}
#[macro_export]
macro_rules! log_error {
($($arg:tt)*) => {
$crate::sdk::log::log_at_level($crate::sdk::log::level::ERROR, &format!($($arg)*))
};
}
#[macro_export]
macro_rules! log_warn {
($($arg:tt)*) => {
$crate::sdk::log::log_at_level($crate::sdk::log::level::WARN, &format!($($arg)*))
};
}
#[macro_export]
macro_rules! log_info {
($($arg:tt)*) => {
$crate::sdk::log::log_at_level($crate::sdk::log::level::INFO, &format!($($arg)*))
};
}
#[macro_export]
macro_rules! log_debug {
($($arg:tt)*) => {
$crate::sdk::log::log_at_level($crate::sdk::log::level::DEBUG, &format!($($arg)*))
};
}
#[macro_export]
macro_rules! log_trace {
($($arg:tt)*) => {
$crate::sdk::log::log_at_level($crate::sdk::log::level::TRACE, &format!($($arg)*))
};
}
pub use log_debug as debug;
pub use log_error as error;
pub use log_info as info;
pub use log_trace as trace;
pub use log_warn as warn;