# console_log [![Crates.io](https://img.shields.io/crates/v/console_log.svg)](https://crates.io/crates/console_log)
A logger that routes messages to the browser's console.
## Usage
```rust
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.
| `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`
```toml
console_log = { version = "1", features = ["color"] }
```
The styled log messages will be rendered as follows:
![Styled log messages](img/log_messages_styled.png)
## Code Size
[Twiggy](https://github.com/rustwasm/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`
```toml
[dependencies]
cfg-if = "0.1"
log = "0.4"
console_log = { version = "1", optional = true }
[features]
default = ["console_log"]
```
`lib.rs`
```rust
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](LICENSE-APACHE) or
http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](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`](https://gitlab.com/limira-rs/wasm-logger)
- [`wasm-bindgen-console-logger`](https://github.com/blm768/wasm-bindgen-console-logger)
- [`fern`](https://github.com/daboross/fern) (use with `console_log::log`)