記錄
用於您的 Tauri 應用程式的可配置記錄功能。
支援的平台
此外掛程式需要至少 1.77.2 的 Rust 版本
平台 | 層級 | 筆記 |
---|---|---|
windows | ||
linux | ||
macos | ||
android | ||
ios |
設定
安裝記錄外掛程式以開始使用。
使用您專案的套件管理器新增依賴項
npm run tauri add log
yarn run tauri add log
pnpm tauri add log
deno task tauri add log
bun tauri add log
cargo tauri add log
-
在
src-tauri
資料夾中執行以下命令,將外掛程式新增至Cargo.toml
中專案的依賴項cargo add tauri-plugin-log -
修改
lib.rs
以初始化外掛程式src-tauri/src/lib.rs #[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");} -
使用您偏好的 JavaScript 套件管理器安裝 JavaScript Guest 綁定
npm install @tauri-apps/plugin-logyarn add @tauri-apps/plugin-logpnpm add @tauri-apps/plugin-logdeno add npm:@tauri-apps/plugin-logbun add @tauri-apps/plugin-log
用法
-
首先,您需要向 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");} -
之後,所有外掛程式的 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;
記錄
使用外掛程式的 warn
、debug
、trace
、info
或 error
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);
若要在 Rust 端建立您自己的記錄,您可以使用 [log
crate]
log::error!("something bad happened!");log::info!("Tauri is awesome!");
請注意,必須將 [log
crate] 新增至您的 Cargo.toml
檔案
[dependencies]log = "0.4"
記錄目標
記錄外掛程式建構器具有 targets
函數,可讓您設定應用程式所有記錄的通用目的地。
將記錄列印到終端機
若要將所有記錄轉發到終端機,請啟用 Stdout
或 Stderr
目標
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
持久化記錄
若要將所有記錄寫入檔案,您可以使用 LogDir
或 Folder
目標。
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}/logs | C:\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
設定中定義權限清單。
請參閱功能總覽以取得更多資訊,以及逐步指南以使用外掛程式權限。
{ "$schema": "../gen/schemas/desktop-schema.json", "identifier": "main-capability", "description": "Capability for the main window", "windows": ["main"], "permissions": ["log:default"]}
預設權限
允許記錄命令
allow-log
權限表
識別碼 | 描述 |
---|---|
|
啟用記錄命令,而無需任何預先設定的範圍。 |
|
拒絕記錄命令,而無需任何預先設定的範圍。 |
© 2025 Tauri Contributors. CC-BY / MIT