跳到内容
Tauri

日志

为您的 Tauri 应用配置日志。

此插件需要 Rust 版本至少为 **1.77.2**

平台 级别 备注
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 客户端绑定使用

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

此目标默认启用。

要在网页视图控制台中查看所有 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 目标。

  • 日志目录:
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 目标,您可以将日志写入文件系统中的自定义位置。

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,该 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 贡献者。CC-BY / MIT