mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-04-29 12:06:01 +02:00
feat(log): re-export the log crate (#2965)
* feat(log): re-export the log crate * code review * Move emit_trace --------- Co-authored-by: Tony <legendmastertony@gmail.com>
This commit is contained in:
committed by
GitHub
parent
6215afe023
commit
625bb1c096
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"log": minor
|
||||
"log-js": minor
|
||||
---
|
||||
|
||||
Re-export the log crate.
|
||||
@@ -0,0 +1,73 @@
|
||||
// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
use std::collections::HashMap;
|
||||
|
||||
use log::RecordBuilder;
|
||||
|
||||
use crate::{LogLevel, WEBVIEW_TARGET};
|
||||
|
||||
#[tauri::command]
|
||||
pub fn log(
|
||||
level: LogLevel,
|
||||
message: String,
|
||||
location: Option<&str>,
|
||||
file: Option<&str>,
|
||||
line: Option<u32>,
|
||||
key_values: Option<HashMap<String, String>>,
|
||||
) {
|
||||
let level = log::Level::from(level);
|
||||
|
||||
let target = if let Some(location) = location {
|
||||
format!("{WEBVIEW_TARGET}:{location}")
|
||||
} else {
|
||||
WEBVIEW_TARGET.to_string()
|
||||
};
|
||||
|
||||
let mut builder = RecordBuilder::new();
|
||||
builder.level(level).target(&target).file(file).line(line);
|
||||
|
||||
let key_values = key_values.unwrap_or_default();
|
||||
let mut kv = HashMap::new();
|
||||
for (k, v) in key_values.iter() {
|
||||
kv.insert(k.as_str(), v.as_str());
|
||||
}
|
||||
builder.key_values(&kv);
|
||||
#[cfg(feature = "tracing")]
|
||||
emit_trace(level, &message, location, file, line, &kv);
|
||||
|
||||
log::logger().log(&builder.args(format_args!("{message}")).build());
|
||||
}
|
||||
|
||||
// Target becomes default and location is added as a parameter
|
||||
#[cfg(feature = "tracing")]
|
||||
fn emit_trace(
|
||||
level: log::Level,
|
||||
message: &String,
|
||||
location: Option<&str>,
|
||||
file: Option<&str>,
|
||||
line: Option<u32>,
|
||||
kv: &HashMap<&str, &str>,
|
||||
) {
|
||||
macro_rules! emit_event {
|
||||
($level:expr) => {
|
||||
tracing::event!(
|
||||
target: WEBVIEW_TARGET,
|
||||
$level,
|
||||
message = %message,
|
||||
location = location,
|
||||
file,
|
||||
line,
|
||||
?kv
|
||||
)
|
||||
};
|
||||
}
|
||||
match level {
|
||||
log::Level::Error => emit_event!(tracing::Level::ERROR),
|
||||
log::Level::Warn => emit_event!(tracing::Level::WARN),
|
||||
log::Level::Info => emit_event!(tracing::Level::INFO),
|
||||
log::Level::Debug => emit_event!(tracing::Level::DEBUG),
|
||||
log::Level::Trace => emit_event!(tracing::Level::TRACE),
|
||||
}
|
||||
}
|
||||
+4
-67
@@ -10,12 +10,10 @@
|
||||
)]
|
||||
|
||||
use fern::{Filter, FormatCallback};
|
||||
use log::{logger, RecordBuilder};
|
||||
use log::{LevelFilter, Record};
|
||||
use serde::Serialize;
|
||||
use serde_repr::{Deserialize_repr, Serialize_repr};
|
||||
use std::borrow::Cow;
|
||||
use std::collections::HashMap;
|
||||
use std::{
|
||||
fmt::Arguments,
|
||||
fs::{self, File},
|
||||
@@ -30,6 +28,9 @@ use tauri::{AppHandle, Emitter};
|
||||
use time::{macros::format_description, OffsetDateTime};
|
||||
|
||||
pub use fern;
|
||||
pub use log;
|
||||
|
||||
mod commands;
|
||||
|
||||
pub const WEBVIEW_TARGET: &str = "webview";
|
||||
|
||||
@@ -206,70 +207,6 @@ impl Target {
|
||||
}
|
||||
}
|
||||
|
||||
// Target becomes default and location is added as a parameter
|
||||
#[cfg(feature = "tracing")]
|
||||
fn emit_trace(
|
||||
level: log::Level,
|
||||
message: &String,
|
||||
location: Option<&str>,
|
||||
file: Option<&str>,
|
||||
line: Option<u32>,
|
||||
kv: &HashMap<&str, &str>,
|
||||
) {
|
||||
macro_rules! emit_event {
|
||||
($level:expr) => {
|
||||
tracing::event!(
|
||||
target: WEBVIEW_TARGET,
|
||||
$level,
|
||||
message = %message,
|
||||
location = location,
|
||||
file,
|
||||
line,
|
||||
?kv
|
||||
)
|
||||
};
|
||||
}
|
||||
match level {
|
||||
log::Level::Error => emit_event!(tracing::Level::ERROR),
|
||||
log::Level::Warn => emit_event!(tracing::Level::WARN),
|
||||
log::Level::Info => emit_event!(tracing::Level::INFO),
|
||||
log::Level::Debug => emit_event!(tracing::Level::DEBUG),
|
||||
log::Level::Trace => emit_event!(tracing::Level::TRACE),
|
||||
}
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
fn log(
|
||||
level: LogLevel,
|
||||
message: String,
|
||||
location: Option<&str>,
|
||||
file: Option<&str>,
|
||||
line: Option<u32>,
|
||||
key_values: Option<HashMap<String, String>>,
|
||||
) {
|
||||
let level = log::Level::from(level);
|
||||
|
||||
let target = if let Some(location) = location {
|
||||
format!("{WEBVIEW_TARGET}:{location}")
|
||||
} else {
|
||||
WEBVIEW_TARGET.to_string()
|
||||
};
|
||||
|
||||
let mut builder = RecordBuilder::new();
|
||||
builder.level(level).target(&target).file(file).line(line);
|
||||
|
||||
let key_values = key_values.unwrap_or_default();
|
||||
let mut kv = HashMap::new();
|
||||
for (k, v) in key_values.iter() {
|
||||
kv.insert(k.as_str(), v.as_str());
|
||||
}
|
||||
builder.key_values(&kv);
|
||||
#[cfg(feature = "tracing")]
|
||||
emit_trace(level, &message, location, file, line, &kv);
|
||||
|
||||
logger().log(&builder.args(format_args!("{message}")).build());
|
||||
}
|
||||
|
||||
pub struct Builder {
|
||||
dispatch: fern::Dispatch,
|
||||
rotation_strategy: RotationStrategy,
|
||||
@@ -528,7 +465,7 @@ impl Builder {
|
||||
}
|
||||
|
||||
fn plugin_builder<R: Runtime>() -> plugin::Builder<R> {
|
||||
plugin::Builder::new("log").invoke_handler(tauri::generate_handler![log])
|
||||
plugin::Builder::new("log").invoke_handler(tauri::generate_handler![commands::log])
|
||||
}
|
||||
|
||||
#[allow(clippy::type_complexity)]
|
||||
|
||||
Reference in New Issue
Block a user