[][src]Module fluence_sdk_main::logger

This module enables log messages from the Wasm side. Internally this module can be viewed as a client for the Logger Module of Asmble. Logger module provides methods that can print out logs to stdout (destination can differ and really depends only on WasmVm implementation).

This module is implemented as a logging facade for crate log. To enable this module in your project please specify wasm_logger feature of fluence_sdk.

Note that this module works only for the Wasm environment and Fluence WasmVm - by specifying this feature it is possible to compile application for the wasm32-unknown-unknown target. (please refer to the first example to find out a way to avoid it).

The logging ability is disabled in WasmVm by default so this feature should be used only for debugging purposes. Please refer to backend app debugging section of the Fluence book to find more information about it.

Examples

This example initializes WasmLogger if target arch is Wasm and simple_logger otherwise. Macroses from crate log used as a logging facade.

    use fluence::sdk::*;
    use log::{error, trace};
    use simple_logger;

    fn main() {
        if cfg!(target_arch = "wasm32") {
            logger::WasmLogger::init_with_level(log::Level::Info).unwrap();
        } else {
            simple_logger::init_with_level(log::Level::Info).unwrap();
        }

        error!("This message will be logged.");
        trace!("This message will not be logged.");
    }

This example provides method for initialization WasmLogger only for Wasm target without specifying logger level:

    use fluence::sdk::*;
    use log::info;

    /// This method initializes WasmLogger and should be called at the start of the application.
    #[no_mangle]
    #[cfg(target_arch = "wasm32")]
    fn init_logger() {
        logger::WasmLogger::init().unwrap();
        info!("If you can see this message that logger was successfully initialized.");
    }

Structs

WasmLogger

The Wasm Logger.