Skip to content

Commit b1d9519

Browse files
committed
docs: promote tracing-web as recommended logging crate
wasm-logger has been unmaintained for 6+ years. tracing-web works seamlessly on both client and server, making it the natural choice for Yew applications. Updated code example to use the current MakeWebConsoleWriter API and dropped the timer.
1 parent ad9d9dc commit b1d9519

14 files changed

Lines changed: 251 additions & 363 deletions

File tree

website/docs/more/debugging.mdx

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,26 @@ Yew automatically logs panics in the browser console.
1010

1111
In JavaScript, `console.log()` is used to log to the browser console. Some options for Yew are listed below.
1212

13-
### [`wasm-logger`](https://crates.io/crates/wasm-logger)
13+
### [`tracing-web`](https://crates.io/crates/tracing-web) (recommended)
1414

15-
`wasm-logger` crate integrates with [`log`](https://crates.io/crates/log) crate to send the log level, source line, and filename to the browser console.
15+
`tracing-web` can be used with [`tracing-subscriber`](https://crates.io/crates/tracing-subscriber) to output messages to the browser console. It works seamlessly on both the client and the server, making it a natural fit for SSR applications where you want a single logging setup across both ends.
1616

1717
```rust ,ignore
18-
use log::info;
18+
use tracing_subscriber::prelude::*;
1919
use wasm_bindgen::JsValue;
2020

2121
fn main() {
22-
wasm_logger::init(wasm_logger::Config::default());
22+
let fmt_layer = tracing_subscriber::fmt::layer()
23+
.with_ansi(false) // only partially supported across browsers
24+
.without_time() // browsers can show timestamps natively in the dev console
25+
.with_writer(tracing_web::MakeWebConsoleWriter::new());
26+
27+
tracing_subscriber::registry()
28+
.with(fmt_layer)
29+
.init();
2330

2431
let object = JsValue::from("world");
25-
info!("Hello {}", object.as_string().unwrap());
32+
tracing::info!("Hello {}", object.as_string().unwrap());
2633
}
2734
```
2835

@@ -41,40 +48,25 @@ fn main() {
4148
}
4249
```
4350

44-
### [`tracing-web`](https://crates.io/crates/tracing-web)
51+
### [`wasm-logger`](https://crates.io/crates/wasm-logger) (unmaintained)
4552

46-
`tracing-web` can be used with [`tracing-subscriber`](https://crates.io/crates/tracing-subscriber) to output messages to the browser console.
53+
`wasm-logger` crate integrates with [`log`](https://crates.io/crates/log) crate to send the log level, source line, and filename to the browser console. Note that this crate is no longer actively maintained. Consider using `tracing-web` instead.
4754

4855
```rust ,ignore
49-
use tracing_subscriber::{
50-
fmt::{
51-
format::{FmtSpan, Pretty},
52-
time::UtcTime,
53-
},
54-
prelude::*,
55-
};
56+
use log::info;
5657
use wasm_bindgen::JsValue;
5758

5859
fn main() {
59-
let fmt_layer = tracing_subscriber::fmt::layer()
60-
.with_ansi(false)
61-
.with_timer(UtcTime::rfc_3339())
62-
.with_writer(tracing_web::MakeConsoleWriter)
63-
.with_span_events(FmtSpan::ACTIVE);
64-
let perf_layer = tracing_web::performance_layer().with_details_from_fields(Pretty::default());
60+
wasm_logger::init(wasm_logger::Config::default());
6561

66-
tracing_subscriber::registry()
67-
.with(fmt_layer)
68-
.with(perf_layer)
69-
.init();
7062
let object = JsValue::from("world");
71-
tracing::info!("Hello {}", object.as_string().unwrap());
63+
info!("Hello {}", object.as_string().unwrap());
7264
}
7365
```
7466

7567
## Debugging component lifecycles
7668

77-
[`tracing`](https://crates.io/crates/tracing) can be used to collect event information related to a component's lifecycle. `tracing` also comes with a feature flag for `log` support, which integrates nicely with `wasm-logger`.
69+
[`tracing`](https://crates.io/crates/tracing) can be used to collect event information related to a component's lifecycle. `tracing` also comes with a feature flag for `log` support, which integrates nicely with `tracing-web`.
7870

7971
[Compile time filters](https://docs.rs/tracing/latest/tracing/level_filters/index.html#compile-time-filters) can be used to adjust verbosity or disable logging, which should result in a smaller Wasm file.
8072

website/i18n/ja/docusaurus-plugin-content-docs/current/more/debugging.mdx

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,26 @@ Yew はブラウザのコンソールにパニックログを自動的に出力
1010

1111
JavaScript では、`console.log()` を使用してブラウザのコンソールに出力します。以下は Yew のいくつかのオプションです。
1212

13-
### [`wasm-logger`](https://crates.io/crates/wasm-logger)
13+
### [`tracing-web`](https://crates.io/crates/tracing-web) (recommended)
1414

15-
`wasm-logger` クレートは [`log`](https://crates.io/crates/log) クレートと統合されており、ログレベル、ソース行、ファイル名をブラウザのコンソールに送信します
15+
`tracing-web` [`tracing-subscriber`](https://crates.io/crates/tracing-subscriber) と一緒に使用でき、メッセージをブラウザのコンソールに出力します
1616

1717
```rust ,ignore
18-
use log::info;
18+
use tracing_subscriber::prelude::*;
1919
use wasm_bindgen::JsValue;
2020

2121
fn main() {
22-
wasm_logger::init(wasm_logger::Config::default());
22+
let fmt_layer = tracing_subscriber::fmt::layer()
23+
.with_ansi(false) // only partially supported across browsers
24+
.without_time() // browsers can show timestamps natively in the dev console
25+
.with_writer(tracing_web::MakeWebConsoleWriter::new());
26+
27+
tracing_subscriber::registry()
28+
.with(fmt_layer)
29+
.init();
2330

2431
let object = JsValue::from("world");
25-
info!("Hello {}", object.as_string().unwrap());
32+
tracing::info!("Hello {}", object.as_string().unwrap());
2633
}
2734
```
2835

@@ -40,34 +47,19 @@ fn main() {
4047
}
4148
```
4249

43-
### [`tracing-web`](https://crates.io/crates/tracing-web)
50+
### [`wasm-logger`](https://crates.io/crates/wasm-logger) (unmaintained)
4451

45-
`tracing-web` [`tracing-subscriber`](https://crates.io/crates/tracing-subscriber) と一緒に使用でき、メッセージをブラウザのコンソールに出力します
52+
`wasm-logger` クレートは [`log`](https://crates.io/crates/log) クレートと統合されており、ログレベル、ソース行、ファイル名をブラウザのコンソールに送信します
4653

4754
```rust ,ignore
48-
use tracing_subscriber::{
49-
fmt::{
50-
format::{FmtSpan, Pretty},
51-
time::UtcTime,
52-
},
53-
prelude::*,
54-
};
55+
use log::info;
5556
use wasm_bindgen::JsValue;
5657

5758
fn main() {
58-
let fmt_layer = tracing_subscriber::fmt::layer()
59-
.with_ansi(false)
60-
.with_timer(UtcTime::rfc_3339())
61-
.with_writer(tracing_web::MakeConsoleWriter)
62-
.with_span_events(FmtSpan::ACTIVE);
63-
let perf_layer = tracing_web::performance_layer().with_details_from_fields(Pretty::default());
59+
wasm_logger::init(wasm_logger::Config::default());
6460

65-
tracing_subscriber::registry()
66-
.with(fmt_layer)
67-
.with(perf_layer)
68-
.init();
6961
let object = JsValue::from("world");
70-
tracing::info!("Hello {}", object.as_string().unwrap());
62+
info!("Hello {}", object.as_string().unwrap());
7163
}
7264
```
7365

website/i18n/ja/docusaurus-plugin-content-docs/version-0.22/more/debugging.mdx

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,26 @@ Yew はブラウザのコンソールにパニックログを自動的に出力
1010

1111
JavaScript では、`console.log()` を使用してブラウザのコンソールに出力します。以下は Yew のいくつかのオプションです。
1212

13-
### [`wasm-logger`](https://crates.io/crates/wasm-logger)
13+
### [`tracing-web`](https://crates.io/crates/tracing-web) (recommended)
1414

15-
`wasm-logger` クレートは [`log`](https://crates.io/crates/log) クレートと統合されており、ログレベル、ソース行、ファイル名をブラウザのコンソールに送信します
15+
`tracing-web` [`tracing-subscriber`](https://crates.io/crates/tracing-subscriber) と一緒に使用でき、メッセージをブラウザのコンソールに出力します
1616

1717
```rust ,ignore
18-
use log::info;
18+
use tracing_subscriber::prelude::*;
1919
use wasm_bindgen::JsValue;
2020

2121
fn main() {
22-
wasm_logger::init(wasm_logger::Config::default());
22+
let fmt_layer = tracing_subscriber::fmt::layer()
23+
.with_ansi(false) // only partially supported across browsers
24+
.without_time() // browsers can show timestamps natively in the dev console
25+
.with_writer(tracing_web::MakeWebConsoleWriter::new());
26+
27+
tracing_subscriber::registry()
28+
.with(fmt_layer)
29+
.init();
2330

2431
let object = JsValue::from("world");
25-
info!("Hello {}", object.as_string().unwrap());
32+
tracing::info!("Hello {}", object.as_string().unwrap());
2633
}
2734
```
2835

@@ -40,34 +47,19 @@ fn main() {
4047
}
4148
```
4249

43-
### [`tracing-web`](https://crates.io/crates/tracing-web)
50+
### [`wasm-logger`](https://crates.io/crates/wasm-logger) (unmaintained)
4451

45-
`tracing-web` [`tracing-subscriber`](https://crates.io/crates/tracing-subscriber) と一緒に使用でき、メッセージをブラウザのコンソールに出力します
52+
`wasm-logger` クレートは [`log`](https://crates.io/crates/log) クレートと統合されており、ログレベル、ソース行、ファイル名をブラウザのコンソールに送信します
4653

4754
```rust ,ignore
48-
use tracing_subscriber::{
49-
fmt::{
50-
format::{FmtSpan, Pretty},
51-
time::UtcTime,
52-
},
53-
prelude::*,
54-
};
55+
use log::info;
5556
use wasm_bindgen::JsValue;
5657

5758
fn main() {
58-
let fmt_layer = tracing_subscriber::fmt::layer()
59-
.with_ansi(false)
60-
.with_timer(UtcTime::rfc_3339())
61-
.with_writer(tracing_web::MakeConsoleWriter)
62-
.with_span_events(FmtSpan::ACTIVE);
63-
let perf_layer = tracing_web::performance_layer().with_details_from_fields(Pretty::default());
59+
wasm_logger::init(wasm_logger::Config::default());
6460

65-
tracing_subscriber::registry()
66-
.with(fmt_layer)
67-
.with(perf_layer)
68-
.init();
6961
let object = JsValue::from("world");
70-
tracing::info!("Hello {}", object.as_string().unwrap());
62+
info!("Hello {}", object.as_string().unwrap());
7163
}
7264
```
7365

website/i18n/ja/docusaurus-plugin-content-docs/version-0.23/more/debugging.mdx

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,26 @@ Yew はブラウザのコンソールにパニックログを自動的に出力
1010

1111
JavaScript では、`console.log()` を使用してブラウザのコンソールに出力します。以下は Yew のいくつかのオプションです。
1212

13-
### [`wasm-logger`](https://crates.io/crates/wasm-logger)
13+
### [`tracing-web`](https://crates.io/crates/tracing-web) (recommended)
1414

15-
`wasm-logger` クレートは [`log`](https://crates.io/crates/log) クレートと統合されており、ログレベル、ソース行、ファイル名をブラウザのコンソールに送信します
15+
`tracing-web` [`tracing-subscriber`](https://crates.io/crates/tracing-subscriber) と一緒に使用でき、メッセージをブラウザのコンソールに出力します
1616

1717
```rust ,ignore
18-
use log::info;
18+
use tracing_subscriber::prelude::*;
1919
use wasm_bindgen::JsValue;
2020

2121
fn main() {
22-
wasm_logger::init(wasm_logger::Config::default());
22+
let fmt_layer = tracing_subscriber::fmt::layer()
23+
.with_ansi(false) // only partially supported across browsers
24+
.without_time() // browsers can show timestamps natively in the dev console
25+
.with_writer(tracing_web::MakeWebConsoleWriter::new());
26+
27+
tracing_subscriber::registry()
28+
.with(fmt_layer)
29+
.init();
2330

2431
let object = JsValue::from("world");
25-
info!("Hello {}", object.as_string().unwrap());
32+
tracing::info!("Hello {}", object.as_string().unwrap());
2633
}
2734
```
2835

@@ -40,34 +47,19 @@ fn main() {
4047
}
4148
```
4249

43-
### [`tracing-web`](https://crates.io/crates/tracing-web)
50+
### [`wasm-logger`](https://crates.io/crates/wasm-logger) (unmaintained)
4451

45-
`tracing-web` [`tracing-subscriber`](https://crates.io/crates/tracing-subscriber) と一緒に使用でき、メッセージをブラウザのコンソールに出力します
52+
`wasm-logger` クレートは [`log`](https://crates.io/crates/log) クレートと統合されており、ログレベル、ソース行、ファイル名をブラウザのコンソールに送信します
4653

4754
```rust ,ignore
48-
use tracing_subscriber::{
49-
fmt::{
50-
format::{FmtSpan, Pretty},
51-
time::UtcTime,
52-
},
53-
prelude::*,
54-
};
55+
use log::info;
5556
use wasm_bindgen::JsValue;
5657

5758
fn main() {
58-
let fmt_layer = tracing_subscriber::fmt::layer()
59-
.with_ansi(false)
60-
.with_timer(UtcTime::rfc_3339())
61-
.with_writer(tracing_web::MakeConsoleWriter)
62-
.with_span_events(FmtSpan::ACTIVE);
63-
let perf_layer = tracing_web::performance_layer().with_details_from_fields(Pretty::default());
59+
wasm_logger::init(wasm_logger::Config::default());
6460

65-
tracing_subscriber::registry()
66-
.with(fmt_layer)
67-
.with(perf_layer)
68-
.init();
6961
let object = JsValue::from("world");
70-
tracing::info!("Hello {}", object.as_string().unwrap());
62+
info!("Hello {}", object.as_string().unwrap());
7163
}
7264
```
7365

website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/more/debugging.mdx

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,26 @@ Yew 会自动在浏览器控制台中输出意外终止日志。
1010

1111
在 JavaScript 中,`console.log()` 用于输出到浏览器控制台。以下是一些 Yew 的选项。
1212

13-
### [`wasm-logger`](https://crates.io/crates/wasm-logger)
13+
### [`tracing-web`](https://crates.io/crates/tracing-web) (recommended)
1414

15-
`wasm-logger` crate 与 [`log`](https://crates.io/crates/log) crate 集成,以将日志级别、源行和文件名发送到浏览器控制台
15+
`tracing-web` 可以与 [`tracing-subscriber`](https://crates.io/crates/tracing-subscriber) 一起使用,将消息输出到浏览器控制台
1616

1717
```rust ,ignore
18-
use log::info;
18+
use tracing_subscriber::prelude::*;
1919
use wasm_bindgen::JsValue;
2020

2121
fn main() {
22-
wasm_logger::init(wasm_logger::Config::default());
22+
let fmt_layer = tracing_subscriber::fmt::layer()
23+
.with_ansi(false) // only partially supported across browsers
24+
.without_time() // browsers can show timestamps natively in the dev console
25+
.with_writer(tracing_web::MakeWebConsoleWriter::new());
26+
27+
tracing_subscriber::registry()
28+
.with(fmt_layer)
29+
.init();
2330

2431
let object = JsValue::from("world");
25-
info!("Hello {}", object.as_string().unwrap());
32+
tracing::info!("Hello {}", object.as_string().unwrap());
2633
}
2734
```
2835

@@ -40,40 +47,25 @@ fn main() {
4047
}
4148
```
4249

43-
### [`tracing-web`](https://crates.io/crates/tracing-web)
50+
### [`wasm-logger`](https://crates.io/crates/wasm-logger) (unmaintained)
4451

45-
`tracing-web` 可以与 [`tracing-subscriber`](https://crates.io/crates/tracing-subscriber) 一起使用,将消息输出到浏览器控制台
52+
`wasm-logger` crate 与 [`log`](https://crates.io/crates/log) crate 集成,以将日志级别、源行和文件名发送到浏览器控制台
4653

4754
```rust ,ignore
48-
use tracing_subscriber::{
49-
fmt::{
50-
format::{FmtSpan, Pretty},
51-
time::UtcTime,
52-
},
53-
prelude::*,
54-
};
55+
use log::info;
5556
use wasm_bindgen::JsValue;
5657

5758
fn main() {
58-
let fmt_layer = tracing_subscriber::fmt::layer()
59-
.with_ansi(false)
60-
.with_timer(UtcTime::rfc_3339())
61-
.with_writer(tracing_web::MakeConsoleWriter)
62-
.with_span_events(FmtSpan::ACTIVE);
63-
let perf_layer = tracing_web::performance_layer().with_details_from_fields(Pretty::default());
59+
wasm_logger::init(wasm_logger::Config::default());
6460

65-
tracing_subscriber::registry()
66-
.with(fmt_layer)
67-
.with(perf_layer)
68-
.init();
6961
let object = JsValue::from("world");
70-
tracing::info!("Hello {}", object.as_string().unwrap());
62+
info!("Hello {}", object.as_string().unwrap());
7163
}
7264
```
7365

7466
## 调试组件生命周期
7567

76-
[`tracing`](https://crates.io/crates/tracing) 可以用于收集与组件生命周期相关的事件信息。`tracing` 还带有一个 `log` 支持的特性标志,可以与 `wasm-logger` 很好地集成。
68+
[`tracing`](https://crates.io/crates/tracing) 可以用于收集与组件生命周期相关的事件信息。`tracing` 还带有一个 `log` 支持的特性标志,可以与 `tracing-web` 很好地集成。
7769

7870
[编译时过滤器](https://docs.rs/tracing/latest/tracing/level_filters/index.html#compile-time-filters) 可以用于调整详细程度或禁用日志记录,这应该会导致更小的 Wasm 文件。
7971

0 commit comments

Comments
 (0)