Closed2

Rustの`env_logger`を使ったログ出力が`cargo test`では出力されない

HaruiHarui

そもそもcargo test中の標準出力はcargoにキャプチャされて出力されないが、テストに失敗したときには、

test hoge::tests::piyo ... FAILED

failures:

---- hoge::tests::piyo stdout ----
(テスト中の標準出力の内容)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

のようにキャプチャされていた中身が出てくる。ちなみに、キャプチャされないようにするには
cargo test -- --nocaptureなどとすればよい。

しかし、env_loggerの出力は-- --nocaptureとしても見ることができない。

これはドキュメントでも触れられているが、この対処法では不十分だった。(おまかんか?) https://docs.rs/env_logger/latest/env_logger/#capturing-logs-in-tests

うまくいった対処法

  • ドキュメント通り let _ = env_logger::builder().format_timestamp_millis().is_test(true).try_init();などしたうえで、
    • 環境変数をRUST_LOG=debugにする。例えばRUST_LOG=debug cargo testなどすると簡単に設定できる。
HaruiHarui

失敗してないときもキャプチャされた標準出力を見たい場合は

RUST_LOG=debug cargo test -- --nocapture

このスクラップは27日前にクローズされました