diff --git a/README.md b/README.md index 82c0119..4e767d8 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ - 🎯 **常駐型デザイン**: システムトレイに格納され、最小限のメモリで MCP サーバーとして動作。 - 🔍 **ベクトル検索**: `sqlite-vec` を Rust からネイティブ操作し、高速な近傍検索(MATCH 句)を実現。 - 📅 **日時型・自動更新対応**: `created_at` / `updated_at` を日時型として管理し、SQLite トリガーにより自動的に時刻を更新。ローカルタイムを標準採用。 +- 📝 **ロギング・ローテーション**: `tauri-plugin-log` による詳細なログ出力と、ファイルサイズベース(10MB/ファイル)の自動ローテーションを実装。デバッグ時はプロジェクトルートの `logs` フォルダにも出力。 - 🤖 **内蔵 LLM サーバー (Sidecar)**: アプリ起動時に `llama-server` を自動起動。Gemma 3 300M モデルを標準サポート。 - 🧠 **高度な Embedding**: Gemma 3 による高精度なベクトル変換をローカル環境で完結。 - 🛠 **SeaORM**: 型安全なクエリビルダにより、複雑なデータベース操作を確実に実行。 diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 327e9fa..ba58a13 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -152,14 +152,27 @@ }); }); + // Logging implementation + let mut log_builder = tauri_plugin_log::Builder::default() + .targets([ + tauri_plugin_log::Target::new(tauri_plugin_log::TargetKind::Stdout), + tauri_plugin_log::Target::new(tauri_plugin_log::TargetKind::LogDir { file_name: None }), + ]) + .max_file_size(10 * 1024 * 1024) + .level(log::LevelFilter::Info); + if cfg!(debug_assertions) { - app.handle().plugin( - tauri_plugin_log::Builder::default() - .level(log::LevelFilter::Info) - .build(), - )?; + // デバッグ時はプロジェクトルートの logs フォルダにも出力 + log_builder = log_builder.target(tauri_plugin_log::Target::new( + tauri_plugin_log::TargetKind::Folder { + path: std::path::PathBuf::from("logs"), + file_name: None, + }, + )); } + app.handle().plugin(log_builder.build())?; + let quit_i = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?; let show_i = MenuItem::with_id(app, "show", "Show", true, None::<&str>)?; let menu = Menu::with_items(app, &[&show_i, &quit_i])?;