日志
为您的 Tauri 应用配置日志。
支持的平台
此插件需要至少 Rust 版本 1.77.2
平台 | 级别 | 备注 |
---|---|---|
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 客户端绑定
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 客户端绑定使用
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 控制台
要查看所有 Rust 日志的 webview 控制台,请启用 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 | {configDir}/{bundleIdentifier} | /home/alice/.config/com.tauri.dev |
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()
在此示例中,debug 和 trace 日志被丢弃,因为它们的级别低于 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贡献者。CC-BY / MIT