console_log

Crates.ioconsole_log
lib.rsconsole_log
version1.0.0
sourcesrc
created_at2019-01-01 05:10:54.595689
updated_at2023-03-10 04:23:52.901965
descriptionA logging facility that routes Rust log messages to the browser's console.
homepage
repositoryhttps://github.com/iamcodemaker/console_log
max_upload_size
id104796
size44,081
maintainers (github:rust-bus:maintainers)

documentation

https://docs.rs/console_log

README

console_log Crates.io

A logger that routes messages to the browser's console.

Usage

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

    info!("It works!");

    // ...
}

Details

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()

Colors

The "color" feature adds styling to the log messages.

Cargo.toml

console_log = { version = "1", features = ["color"] }

The styled log messages will be rendered as follows:

Styled log messages

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 = "1", optional = true }

[features]
default = ["console_log"]

lib.rs

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.

License

This project is licensed under either of

at your option.

Contributing

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

See Also

Commit count: 25

cargo fmt