Awesome
console_log
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:
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
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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
wasm-logger
wasm-bindgen-console-logger
fern
(use withconsole_log::log
)