開発中、println! を使ってデバッグするのは手軽ですが、アプリの規模が大きくなると「エラーだけ見たい」「特定の機能のログだけ見たい」といった細かい制御が必要になります。
Rust では log クレートで「ログを取る」という定義だけを行い、実際に出力する役割(ロガー)として env_logger などのクレートを組み合わせるのが一般的です。
1. クレートの追加
ターミナルで src-tauri ディレクトリに移動して、以下のコマンドを実行します。
cargo add log env_logger
2. 初期化とログ出力
lib.rs の run 関数で env_logger::init() を呼ぶことでセットアップ完了です。
// logマクロを使えるようにする
use log::{info, warn, error, debug};
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
// ログシステムの初期化(必ず最初に呼ぶ)
env_logger::init();
tauri::Builder::default()
.setup(|app| {
// 様々なレベルでログ出力
info!("アプリケーションが起動しました");
debug!("詳細なデバッグ情報(通常は見えません)");
if let Err(e) = do_something() {
error!("エラーが発生しました: {}", e);
}
Ok(())
})
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
fn do_something() -> Result<(), String> {
warn!("これは警告メッセージです");
Ok(())
}
3. ログレベルの制御
env_logger の最大の特徴は、環境変数 RUST_LOG で出力内容を変えられる点です。
コードを書き換えずに、実行時の指定だけでログの詳細度を調整できます。
実行方法
Windows (PowerShell):
# infoレベル以上のログを表示(アプリ名 = debug にすると自分のコードだけ詳細表示も可能)
$env:RUST_LOG="info"
npm run tauri dev
macOS / Linux:
RUST_LOG=info npm run tauri dev
ログレベルの種類(詳細順)
1. error: 致命的なエラー
2. warn: 警告(処理は続くが注意が必要)
3. info: 一般的な情報(起動完了など)
4. debug: デバッグ情報(変数の値など)
5. trace: 非常に詳細な追跡情報
補足: tauri-plugin-log との違い
env_logger: コンソール(ターミナル)に出力するだけ。シンプルで軽量。tauri-plugin-log: ログファイルへの保存、ローテーション、フロントエンドのコンソールログとの統合など、高機能なログ管理が必要な場合はこちらを使います。
初心者のうちは env_logger で十分ですが、リリース後にユーザーからログファイルをもらって調査したい場合などは、プラグイン版への移行を検討してください。