コンテンツにスキップ
Tauri

Logging(ログ記録)

《訳注》

Plugin 説明内容の英語表記部分について Plugin の各章は、原文データからページ内容の一部が自動生成されているため、英語表記のままの部分があります。

Tauri アプリ用の設定可能なログ記録。

This plugin requires a Rust version of at least 1.77.2

Platform Level Notes
windows
linux
macos
android
ios

はじめに、「log」プラグインをインストールしてください。

自分のプロジェクトのパッケージ・マネージャーを使用して依存関係を追加します:

npm run tauri add log
  1. まず、プラグインを Tauri に登録する必要があります。

    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().build())
    .run(tauri::generate_context!())
    .expect("error while running tauri application");
    }
  2. すると、プラグインのすべての API は JavaScript ゲスト・バインディングを通じて利用できるようになります:

    import {
    warn,
    debug,
    trace,
    info,
    error,
    attachConsole,
    attachLogger,
    } from '@tauri-apps/plugin-log';
    // `"withGlobalTauri": true` を使用する場合は、
    // const { warn, debug, trace, info, error, attachConsole, attachLogger } = window.__TAURI__.log; を使用できます

プラグインの warndebugtraceinfoerror API のいずれかを使用して、JavaScript コードから「ログ記録」を生成します。

import { warn, debug, trace, info, error } from '@tauri-apps/plugin-log';
trace('Trace');
info('Info');
error('Error');

すべての console メッセージを「log」プラグインに自動転送するには、次のように書き換えます:

import { warn, debug, trace, info, error } from '@tauri-apps/plugin-log';
function forwardConsole(
fnName: 'log' | 'debug' | 'info' | 'warn' | 'error',
logger: (message: string) => Promise<void>
) {
const original = console[fnName];
console[fnName] = (message) => {
original(message);
logger(message);
};
}
forwardConsole('log', trace);
forwardConsole('debug', debug);
forwardConsole('info', info);
forwardConsole('warn', warn);
forwardConsole('error', error);

「log」プラグイン・ビルダーには、すべてのアプリケーション・ログの共通の送り先を設定できる targets 関数があります。

すべてのログをターミナルに転送するには、Stdout または Stderr をターゲットとして有効化します。

tauri_plugin_log::Builder::new()
.target(tauri_plugin_log::Target::new(
tauri_plugin_log::TargetKind::Stdout,
))
.build()

このターゲットはデフォルトで有効化されています。

Webview コンソールにすべての Rust ログを表示するには、Webview ターゲットを有効にし、フロントエンドで attachConsole を実行します:

tauri_plugin_log::Builder::new()
.target(tauri_plugin_log::Target::new(
tauri_plugin_log::TargetKind::Webview,
))
.build()
import { attachConsole } from '@tauri-apps/plugin-log';
const detach = await attachConsole();
// コンソールへのログ出力が不要になった場合には、detach() を呼び出してください。

すべてのログをファイルに書き込むには、LogDir または Folder ターゲットのいずれかを使用します。

《訳注》

永続ログ persisting log: (通常 persistent log) システムやアプリケーションが終了・再起動してもログ・データの履歴を保持する仕組み。

  • LogDir:
tauri_plugin_log::Builder::new()
.target(tauri_plugin_log::Target::new(
tauri_plugin_log::TargetKind::LogDir {
file_name: Some("logs".to_string()),
},
))
.build()

LogDir ターゲットを使用すると、すべてのログは推奨されるログ・ディレクトリに保存されます。 次の表は、プラットフォームごとのログの場所を示しています:

PlatformValue設定例
Linux$XDG_DATA_HOME/{bundleIdentifier}/logs or $HOME/.local/share/{bundleIdentifier}/logs/home/alice/.local/share/com.tauri.dev/logs
macOS{homeDir}/Library/Logs/{bundleIdentifier}/Users/Alice/Library/Logs/com.tauri.dev
Windows{FOLDERID_LocalAppData}/{bundleIdentifier}/logsC:\Users\Alice\AppData\Local\com.tauri.dev\logs
  • Folder:

Folder ターゲットを使用すると、ファイル・システム内のカスタムな場所にログを書き込むことができます。

tauri_plugin_log::Builder::new()
.target(tauri_plugin_log::Target::new(
tauri_plugin_log::TargetKind::Folder {
path: std::path::PathBuf::from("/path/to/logs"),
file_name: None,
},
))
.build()

デフォルトの file_name は「アプリケーション名」です。

デフォルトでは、ログ・ファイルは最大サイズに到達すると破棄されます。 最大ファイル・サイズは、ビルダーの max_file_size 関数を使用して設定できます:

tauri_plugin_log::Builder::new()
.max_file_size(50_000 /* bytes */)
.build()

Tauri は、ログ・ファイルがサイズ上限に達したときに、以前のファイルを破棄するのではなく、自動的にログ・ファイルを入れ替えます。 この動作は rotation_strategy(入れ替え方式)を使用して設定できます:

tauri_plugin_log::Builder::new()
.rotation_strategy(tauri_plugin_log::RotationStrategy::KeepAll)
.build()

デフォルトではすべてのログが処理されます。ログの量を減らし、関連する情報のみをフィルタリングする方法がいくつかあります。

最大ログ・レベルを設定するには、level 関数を使用します:

tauri_plugin_log::Builder::new()
.level(log::LevelFilter::Info)
.build()

上記の設定例では、「デバッグ・ログ」と「トレース・ログ」は info(情報) よりもレベルが低いため破棄されます。

個々のモジュールごとにそれぞれ最大レベルを定義することもできます:

tauri_plugin_log::Builder::new()
.level(log::LevelFilter::Info)
// コマンド・モジュールのみ詳細ログ
.level_for("my_crate_name::commands", log::LevelFilter::Trace)
.build()

これらの API は log crate を使用するため、Cargo.toml ファイルに追加する必要があることに注意してください:

[dependencies]
log = "0.4"

メタデータをチェックして不要なログを破棄するように filter 関数を定義できます:

tauri_plugin_log::Builder::new()
// ターゲット "hyper" のログを除外します
.filter(|metadata| metadata.target() != "hyper")
.build()

「log」プラグインは、各ログ・レコードを DATE[TARGET][LEVEL] MESSAGE のようなフォーマットに書式設定します。 カスタム・フォーマットの機能は format で提供されます。

tauri_plugin_log::Builder::new()
.format(|out, message, record| {
out.finish(format_args!(
"[{} {}] {}",
record.level(),
record.target(),
message
))
})
.build()

デフォルトでは、「log」プラグインは UTC タイムゾーンを使用して日付を指定します。 ただし、timezone_strategy を使用してローカル・タイムゾーンを使用するように設定できます。

《訳注》

UTC: 協定世界時(coordinated universal time)。所謂「国際標準時」。日本標準時は、「UTC+9 時間」となります。《wikipedia

tauri_plugin_log::Builder::new()
.timezone_strategy(tauri_plugin_log::TimezoneStrategy::UseLocal)
.build()

デフォルトでは、潜在的に危険なプラグイン・コマンドとそのスコープ(有効範囲)はすべてブロックされており、アクセスできません。これらを有効にするには、capabilities 設定でアクセス権限を変更する必要があります。

詳細については「セキュリティ・レベル Capabilities」の章を参照してください。また、プラグインのアクセス権限を設定するには「プライグン・アクセス権の使用」の章のステップ・バイ・ステップ・ガイドを参照してください。

src-tauri/capabilities/default.json
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "main-capability",
"description": "Capability for the main window",
"windows": ["main"],
"permissions": ["log:default"]
}

Default Permission

Allows the log command

This default permission set includes the following:

  • allow-log

Permission Table

Identifier Description

log:allow-log

Enables the log command without any pre-configured scope.

log:deny-log

Denies the log command without any pre-configured scope.

【※ この日本語版は、「Jul 3, 2025 英語版」に基づいています】


© 2025 Tauri Contributors. CC-BY / MIT