#log-messages #console #logging #log #log-level #web-sys

console_log

A logging facility that routes Rust log messages to the browser's console

7 releases (1 stable)

1.0.0 Mar 10, 2023
0.2.2 Mar 10, 2023
0.2.1 Feb 25, 2023
0.2.0 Apr 21, 2020
0.1.2 Jan 1, 2019

#4 in WebAssembly

Download history 50794/week @ 2023-11-28 54303/week @ 2023-12-05 52303/week @ 2023-12-12 39706/week @ 2023-12-19 22303/week @ 2023-12-26 55170/week @ 2024-01-02 52123/week @ 2024-01-09 56180/week @ 2024-01-16 52973/week @ 2024-01-23 64000/week @ 2024-01-30 62474/week @ 2024-02-06 52234/week @ 2024-02-13 67277/week @ 2024-02-20 69679/week @ 2024-02-27 67588/week @ 2024-03-05 12625/week @ 2024-03-12

222,349 downloads per month
Used in 1,383 crates (132 directly)

MIT/Apache

29KB
111 lines

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

Dependencies

~9MB
~173K SLoC