tauri-plugin-log を使用すると、Rust 側とフロントエンド側のログを一元管理し、設定したルールに従ってコンソールへの出力やログファイルへの保存を行うことができます。
1. モジュールのインストール
# プラグインの追加
npm run tauri add log
# Rust の log クレートの追加 (LevelFilter 等に必要)
cd src-tauri
cargo add log
2. Permissions (権限) の設定
src-tauri/capabilities/default.json に以下の権限を追加します。
{
"permissions": [
...,
"log:default"
]
}
3. Rust 側の設定
src-tauri/src/lib.rs でプラグインを初期化します。
use tauri_plugin_log::{Target, TargetKind};
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.plugin(
tauri_plugin_log::Builder::new()
.targets([
Target::new(TargetKind::Stdout), // 標準出力
Target::new(TargetKind::LogDir { file_name: None }), // ログファイル
Target::new(TargetKind::Webview), // Webview (Console)
])
.level(log::LevelFilter::Debug) // ログレベル設定
.build(),
)
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
4. Rust 側でのログ出力
標準の log クレートを使用します。
use log::{info, warn, error};
#[tauri::command]
fn do_something() {
info!("Rust 側で処理を開始しました");
// ...
}
5. フロントエンド側でのログ出力
console.log をフックして Rust 側に転送するか、プラグインの API を直接呼び出します。
import { info, warn, error, attachConsole } from '@tauri-apps/plugin-log';
// Rust のログを Webview のコンソールにも表示する
const detach = await attachConsole();
// プラグイン経由で出力(これらはログファイルにも記録されます)
await info('フロントエンドからの情報ログ');
await error('エラーが発生しました');
// 不要になったらデタッチ
// detach();
6. ログファイルの場所
OS 標準のログディレクトリに保存されます。
- Windows: %APPDATA%\<bundle-identifier>\logs\
- macOS: ~/Library/Logs/<bundle-identifier>/
- Linux: $XDG_DATA_HOME/<bundle-identifier>/logs/