🦀
Rustのログ処理をレベル別に行う
この記事の背景
- Rustでログにかかわる処理を理解しようとする際、その他の(ログ処理以外の)実装を含むコード
ではなく、純粋にログ処理のみを対象とするコードで理解するため。 - 実行環境がLinuxと思われるコマンドのベタ張りで説明している記事が多く、Windows11環境での
実装時に実行すべきコマンドをWeb検索を行った上で直接見つけられなかったため。
前提条件
- Rustのプログラムファイルを新規に作成することができる。(Hello Worldが行える程度でOK)
- CLIでのコマンド操作が行える。
実行環境
OS:Microsoft Windows11 Pro(AMD64) 10.0.26100 ビルド 26100
Rust:rustc 1.86.0 (05f9846f8 2025-03-31)
Cargo:cargo 1.86.0 (adf9b6ad1 2025-02-28)
実行プログラム
main.rs
use log::{info, warn, error, debug, trace};
fn main() {
env_logger::init();
println!("start");
// ログレベルに応じた出力
trace!("これは trace ログです");
debug!("これは debug ログです");
info!("これは info ログです");
warn!("これは warn ログです");
error!("これは error ログです");
println!("stop");
}
cargo.toml
[package]
name = "<任意のプロジェクト名>"
version = "0.1.0"
edition = "2024"
[dependencies]
log = "0.4.27"
env_logger = "0.11.8"
実行コマンド1
以下で実行するコマンドはPowerShellでの実行を想定しています。
WindowsではコマンドプロンプトとPowerShellで挙動に違いがあるため注意。
$env:RUST_LOG = "trace"
cargo run
結果
start
[<日付情報> TRACE logtest] これは trace ログです
[<日付情報> DEBUG logtest] これは debug ログです
[<日付情報> INFO logtest] これは info ログです
[<日付情報> WARN logtest] これは warn ログです
[<日付情報> ERROR logtest] これは error ログです
stop
実行コマンド2
$env:RUST_LOG = "info"
cargo run
結果
start
[<日付情報> INFO logtest] これは info ログです
[<日付情報> WARN logtest] これは warn ログです
[<日付情報> ERROR logtest] これは error ログです
stop
まとめ
実行コマンド1,2は、環境変数に入れるログのレベル(指定以上のレベルのログを表示する)を変化させて同一のプログラムを動作させたものである。
これを用いることで同一のプログラムとして動作させながら、実行環境によってログに表示する情報量をコントロールすることができる。
Discussion