跳到內容
Tauri

記錄

用於您的 Tauri 應用程式的可配置記錄功能。

支援的平台

此外掛程式需要至少 1.77.2 的 Rust 版本

平台 層級 筆記
windows
linux
macos
android
ios

設定

安裝記錄外掛程式以開始使用。

使用您專案的套件管理器新增依賴項

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 guest 綁定使用

    import {
    warn,
    debug,
    trace,
    info,
    error,
    attachConsole,
    attachLogger,
    } from '@tauri-apps/plugin-log';
    // when using `"withGlobalTauri": true`, you may use
    // 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 訊息轉發到記錄外掛程式,您可以重新編寫它們

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);

記錄目標

記錄外掛程式建構器具有 targets 函數,可讓您設定應用程式所有記錄的通用目的地。

將記錄列印到終端機

若要將所有記錄轉發到終端機,請啟用 StdoutStderr 目標

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

預設情況下,此目標已啟用。

記錄到 Webview 主控台

若要在 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();
// call detach() if you do not want to print logs to the console anymore

持久化記錄

若要將所有記錄寫入檔案,您可以使用 LogDirFolder 目標。

  • 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 目標時,所有記錄都會儲存在建議的記錄目錄中。下表說明每個平台的記錄位置

平台範例
Linux$XDG_DATA_HOME/{bundleIdentifier}/logs$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)
// verbose logs only for the commands module
.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()
// exclude logs with target `"hyper"`
.filter(|metadata| metadata.target() != "hyper")
.build()

格式化

記錄外掛程式將每個記錄記錄格式化為 DATE[TARGET][LEVEL] MESSAGE。可以使用 format 提供自訂格式函數

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

記錄日期

預設情況下,記錄外掛程式使用 UTC 時區來格式化日期,但您可以將其設定為使用本機時區,方法是使用 timezone_strategy

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

權限

預設情況下,所有外掛程式命令都被封鎖且無法存取。您必須在 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"]
}

預設權限

允許記錄命令

  • allow-log

權限表

識別碼 描述

log:allow-log

啟用記錄命令,而無需任何預先設定的範圍。

log:deny-log

拒絕記錄命令,而無需任何預先設定的範圍。


© 2025 Tauri Contributors. CC-BY / MIT