[][src]Crate console_log

A logger that logs to the browser's console.

Example

use log::Level;
use log::info;
fn main() {
    console_log::init_with_level(Level::Debug);

    info!("It works!");

    // ...
}

Log Levels

Rust's log levels map to the browser's console log in the following way.

Rust Web Console
trace!() console.debug()
debug!() console.log()
info!() console.info()
warn!() console.warn()
error!() console.error()

Getting Fancy

The feature set provided by this crate is intentionally very basic. If you need more flexible formatting of log messages (timestamps, file and line info, etc.) this crate can be used with the fern logger via the console_log::log function.

Code Size

Twiggy reports this library adding about 180Kb to the size of a minimal wasm binary in a debug build. If you want to avoid this, mark the library as optional and conditionally initialize it in your code for non-release builds.

Cargo.toml

[dependencies]
cfg_if = "0.1"
log = "0.4"
console_log = { version = "0.1", optional = true }
 
[features]
default = ["console_log"]

lib.rs

This example is not tested
use wasm_bindgen::prelude::*;
use cfg_if::cfg_if;

cfg_if! {
    if #[cfg(feature = "console_log")] {
        fn init_log() {
            use log::Level;
            console_log::init_with_level(Level::Trace).expect("error initializing log");
        }
    } else {
        fn init_log() {}
    }
}
 
#[wasm_bindgen]
pub fn main() {
    init_log();
    // ...
}

Limitations

The file and line number information associated with the log messages reports locations from the shims generated by wasm-bindgen, not the location of the logger call.

Functions

init

Initializes the global logger with max_log_level set to Level::Info (a sensible default).

init_with_level

Initializes the global logger setting max_log_level to the given value.

log

Print a log::Record to the browser's console at the appropriate level.