ark-module 0.17.0-pre.18

Ark Wasm module implementation helper
Documentation
#[derive(Copy, Clone)]
pub struct Log {}

impl Log {
    /// Activate and install the logger in the module
    ///
    /// This needs to be run before any of the logging macros work. Such as `log::debug!`, `warn!`, `info!`.
    #[allow(clippy::trivially_copy_pass_by_ref)]
    pub fn activate(&'static self) {
        let _ = log::set_logger(self).map(|()| log::set_max_level(log::LevelFilter::Trace));
    }
}

impl log::Log for Log {
    fn enabled(&self, _metadata: &log::Metadata<'_>) -> bool {
        true
    }

    fn log(&self, record: &log::Record<'_>) {
        let level = match record.level() {
            log::Level::Error => ark_api::core::LogLevel::Error,
            log::Level::Warn => ark_api::core::LogLevel::Warn,
            log::Level::Info => ark_api::core::LogLevel::Info,
            log::Level::Debug => ark_api::core::LogLevel::Debug,
            log::Level::Trace => ark_api::core::LogLevel::Trace,
        };

        let s = format!("{}", record.args());

        ark_api::core::log(level, &s);
    }

    fn flush(&self) {}
}

pub static LOG: Log = Log {};