blog.bouzuya.net

2024-12-09 #[tracing::instrument] を設定している

bouzuya/rust-sandbox の fbauth に #[tracing::instrument] を設定している。ログが足りていない。

https://docs.rs/tracing/0.1.41/tracing/attr.instrument.html

#[tracing::instrument(err(Debug), ret(level = tracing::Level::DEBUG), skip(app_state))] で入れてみた。

ret は戻り値、 err はエラーを記録する。

ret は既定値が Level::INFO なので Level::DEBUG にしている。

err(Debug)std::fmt::Debug で記録する。 anyhow::Error の場合 std::fmt::Debug で記録すると caused by の形で source をたどってくれる。とっておきたくない引数は skip に含める。

これをとりあえず request handler に設定した。

ぼくはあまりきちんとログをとったことがなくて、ログをどう入れるのが適切なのか分からない。「スタックトレースか?」くらいに入れてみて減らしていくのが良いのかもしれない。

Rust は例外がなく Result で処理するので、雑に書いていると、例外だと当然のようにとってくれるエラーの発生箇所の情報さえ失われる。エラーの工夫と合わせてログもこまめに取るようにしたい。


今日のコミット。