Implement stdout and file logging using tauri-plugin-log

This commit is contained in:
ninjadev64 committed 2023-12-22 16:24:33 -05:00
1 parent 50908effc7
commit 193f6882fa
6 files changed
+304 -14

No files matched your search

+275 -5
View File
@@ -44,6 +44,17 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
[[package]]
name = "ahash"
version = "0.7.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd"
dependencies = [
"getrandom 0.2.10",
"once_cell",
"version_check",
]
[[package]]
name = "aho-corasick"
version = "1.1.2"
@@ -89,6 +100,12 @@ version = "1.0.75"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
[[package]]
name = "arrayvec"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
[[package]]
name = "ascii"
version = "1.1.0"
@@ -329,6 +346,18 @@ version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
[[package]]
name = "bitvec"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"
dependencies = [
"funty",
"radium",
"tap",
"wyz",
]
[[package]]
name = "block"
version = "0.1.6"
@@ -360,6 +389,30 @@ dependencies = [
"tracing",
]
[[package]]
name = "borsh"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26d4d6dafc1a3bb54687538972158f07b2c948bc57d5890df22c0739098b3028"
dependencies = [
"borsh-derive",
"cfg_aliases",
]
[[package]]
name = "borsh-derive"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf4918709cc4dd777ad2b6303ed03cb37f3ca0ccede8c1b0d28ac6db8f4710e0"
dependencies = [
"once_cell",
"proc-macro-crate 2.0.0",
"proc-macro2",
"quote",
"syn 2.0.38",
"syn_derive",
]
[[package]]
name = "brotli"
version = "3.4.0"
@@ -407,6 +460,39 @@ version = "3.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
[[package]]
name = "byte-unit"
version = "5.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d405b41420a161b4e1dd5a52e3349f41b4dae9a39be02aff1d67fe53256430ac"
dependencies = [
"rust_decimal",
"serde",
"utf8-width",
]
[[package]]
name = "bytecheck"
version = "0.6.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627"
dependencies = [
"bytecheck_derive",
"ptr_meta",
"simdutf8",
]
[[package]]
name = "bytecheck_derive"
version = "0.6.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61"
dependencies = [
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "bytemuck"
version = "1.14.0"
@@ -513,6 +599,12 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "cfg_aliases"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
[[package]]
name = "chrono"
version = "0.4.31"
@@ -966,6 +1058,15 @@ dependencies = [
"simd-adler32",
]
[[package]]
name = "fern"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee"
dependencies = [
"log",
]
[[package]]
name = "field-offset"
version = "0.3.6"
@@ -1028,6 +1129,12 @@ dependencies = [
"percent-encoding",
]
[[package]]
name = "funty"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
[[package]]
name = "futf"
version = "0.1.5"
@@ -1329,7 +1436,7 @@ checksum = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a"
dependencies = [
"anyhow",
"heck 0.4.1",
"proc-macro-crate",
"proc-macro-crate 1.3.1",
"proc-macro-error",
"proc-macro2",
"quote",
@@ -1424,7 +1531,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "684c0456c086e8e7e9af73ec5b84e35938df394712054550e81558d21c44ab0d"
dependencies = [
"anyhow",
"proc-macro-crate",
"proc-macro-crate 1.3.1",
"proc-macro-error",
"proc-macro2",
"quote",
@@ -1464,6 +1571,9 @@ name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
dependencies = [
"ahash",
]
[[package]]
name = "hashbrown"
@@ -1953,6 +2063,9 @@ name = "log"
version = "0.4.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
dependencies = [
"value-bag",
]
[[package]]
name = "loom"
@@ -2285,7 +2398,7 @@ version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799"
dependencies = [
"proc-macro-crate",
"proc-macro-crate 1.3.1",
"proc-macro2",
"quote",
"syn 1.0.109",
@@ -2371,6 +2484,7 @@ dependencies = [
"anyhow",
"futures-util",
"lazy_static",
"log",
"os_info",
"rouille",
"serde",
@@ -2380,6 +2494,7 @@ dependencies = [
"serialport",
"tauri",
"tauri-build",
"tauri-plugin-log",
"tokio",
"tokio-tungstenite",
]
@@ -2753,6 +2868,15 @@ dependencies = [
"toml_edit 0.19.15",
]
[[package]]
name = "proc-macro-crate"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8"
dependencies = [
"toml_edit 0.20.7",
]
[[package]]
name = "proc-macro-error"
version = "1.0.4"
@@ -2792,6 +2916,26 @@ dependencies = [
"unicode-ident",
]
[[package]]
name = "ptr_meta"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1"
dependencies = [
"ptr_meta_derive",
]
[[package]]
name = "ptr_meta_derive"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac"
dependencies = [
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "quick-error"
version = "1.2.3"
@@ -2825,6 +2969,12 @@ dependencies = [
"proc-macro2",
]
[[package]]
name = "radium"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
[[package]]
name = "rand"
version = "0.7.3"
@@ -2985,6 +3135,15 @@ version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
[[package]]
name = "rend"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd"
dependencies = [
"bytecheck",
]
[[package]]
name = "reqwest"
version = "0.11.22"
@@ -3049,6 +3208,35 @@ dependencies = [
"windows 0.37.0",
]
[[package]]
name = "rkyv"
version = "0.7.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "527a97cdfef66f65998b5f3b637c26f5a5ec09cc52a3f9932313ac645f4190f5"
dependencies = [
"bitvec",
"bytecheck",
"bytes",
"hashbrown 0.12.3",
"ptr_meta",
"rend",
"rkyv_derive",
"seahash",
"tinyvec",
"uuid",
]
[[package]]
name = "rkyv_derive"
version = "0.7.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5c462a1328c8e67e4d6dbad1eb0355dd43e8ab432c6e227a43657f16ade5033"
dependencies = [
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "rouille"
version = "3.6.2"
@@ -3073,6 +3261,22 @@ dependencies = [
"url",
]
[[package]]
name = "rust_decimal"
version = "1.33.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06676aec5ccb8fc1da723cc8c0f9a46549f21ebb8753d3915c6c41db1e7f1dc4"
dependencies = [
"arrayvec",
"borsh",
"bytes",
"num-traits",
"rand 0.8.5",
"rkyv",
"serde",
"serde_json",
]
[[package]]
name = "rustc-demangle"
version = "0.1.23"
@@ -3163,6 +3367,12 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "seahash"
version = "4.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
[[package]]
name = "security-framework"
version = "2.9.2"
@@ -3430,6 +3640,12 @@ version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
[[package]]
name = "simdutf8"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a"
[[package]]
name = "siphasher"
version = "0.3.11"
@@ -3574,6 +3790,18 @@ dependencies = [
"unicode-ident",
]
[[package]]
name = "syn_derive"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b"
dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
"syn 2.0.38",
]
[[package]]
name = "sys-locale"
version = "0.2.4"
@@ -3694,6 +3922,12 @@ dependencies = [
"syn 1.0.109",
]
[[package]]
name = "tap"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
[[package]]
name = "tar"
version = "0.4.40"
@@ -3825,6 +4059,21 @@ dependencies = [
"tauri-utils",
]
[[package]]
name = "tauri-plugin-log"
version = "0.0.0"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#9b994169651cc61194c60cb3205227421144e243"
dependencies = [
"byte-unit",
"fern",
"log",
"serde",
"serde_json",
"serde_repr",
"tauri",
"time",
]
[[package]]
name = "tauri-runtime"
version = "0.14.1"
@@ -4357,6 +4606,12 @@ version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
[[package]]
name = "utf8-width"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3"
[[package]]
name = "uuid"
version = "1.5.0"
@@ -4372,6 +4627,12 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
[[package]]
name = "value-bag"
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a72e1902dde2bd6441347de2b70b7f5d59bf157c6c62f0c44572607a1d55bbe"
[[package]]
name = "vcpkg"
version = "0.2.15"
@@ -5019,6 +5280,15 @@ dependencies = [
"windows-implement",
]
[[package]]
name = "wyz"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed"
dependencies = [
"tap",
]
[[package]]
name = "x11"
version = "2.21.0"
@@ -5106,7 +5376,7 @@ version = "3.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d"
dependencies = [
"proc-macro-crate",
"proc-macro-crate 1.3.1",
"proc-macro2",
"quote",
"regex",
@@ -5145,7 +5415,7 @@ version = "3.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd"
dependencies = [
"proc-macro-crate",
"proc-macro-crate 1.3.1",
"proc-macro2",
"quote",
"syn 1.0.109",
+2
View File
@@ -24,6 +24,8 @@ rouille = "3.6.2"
# Smaller utility libraries
futures-util = "0.3.29"
anyhow = "1.0.75"
log = "0.4.20"
tauri-plugin-log = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" }
serde-inline-default = "0.1.1"
serde_with = "3.4.0"
lazy_static = "1.4.0"
+6 -2
View File
@@ -6,6 +6,7 @@ use std::thread;
use std::time::Duration;
use serde_json::Value;
use log::{warn, error};
/// A representation of a ProntoKey device.
pub struct ProntoKeyDevice {
@@ -39,7 +40,10 @@ impl ProntoKeyDevice {
.open()
{
Ok(p) => p,
Err(error) => panic!("Failed to open serial port: {}", error)
Err(error) => {
error!("Failed to open serial port: {}", error);
panic!()
}
};
let _ = port.write("register".as_bytes());
@@ -109,7 +113,7 @@ impl ProntoKeyDevice {
}
},
Err(ref error) if error.kind() == std::io::ErrorKind::TimedOut => (),
Err(error) => eprintln!("{:?}", error)
Err(error) => warn!("Failed to decode serial message from ProntoKey device: {}", error)
}
thread::sleep(Duration::from_millis(10));
}
+2 -1
View File
@@ -4,6 +4,7 @@ mod settings;
use crate::shared::ActionContext;
use serde::Deserialize;
use log::warn;
#[derive(Deserialize)]
pub struct RegisterEvent {
@@ -47,7 +48,7 @@ pub async fn process_incoming_message(data: tokio_tungstenite::tungstenite::Mess
InboundEventType::SetSettings(event) => settings::set_settings(event).await,
InboundEventType::GetSettings(event) => settings::get_settings(event).await
} {
eprintln!("Failed to process incoming event: {}\n\tCaused by: {}", error, error.root_cause())
warn!("Failed to process incoming event from plugin: {}\n\tCaused by: {}", error, error.root_cause())
}
}
+9
View File
@@ -11,6 +11,7 @@ use events::frontend;
use tokio::sync::Mutex;
use lazy_static::lazy_static;
use tauri_plugin_log::LogTarget;
lazy_static! {
pub static ref APP_HANDLE: Mutex<Option<tauri::AppHandle>> = Mutex::new(None);
@@ -28,6 +29,14 @@ async fn main() {
frontend::get_selected_profile,
frontend::set_selected_profile
])
.plugin(tauri_plugin_log::Builder::default()
.targets([
LogTarget::LogDir,
LogTarget::Stdout
])
.level(log::LevelFilter::Debug)
.build()
)
.build(tauri::generate_context!())
{
Ok(app) => app,
+10 -6
View File
@@ -13,6 +13,7 @@ use tokio::net::{TcpListener, TcpStream};
use futures_util::StreamExt;
use anyhow::{Context, anyhow};
use log::{warn, error};
/// Initialise a plugin from a given directory.
async fn initialise_plugin(path: path::PathBuf) -> anyhow::Result<()> {
@@ -194,7 +195,10 @@ pub fn initialise_plugins(app: AppHandle) {
let entries = match fs::read_dir(&plugin_dir) {
Ok(p) => p,
Err(error) => panic!("Failed to read plugins directory at {}: {}", plugin_dir.display(), error)
Err(error) => {
error!("Failed to read plugins directory at {}: {}", plugin_dir.display(), error);
panic!()
}
};
// Iterate through all directory entries in the plugins folder and initialise them as plugins if appropriate
@@ -203,14 +207,14 @@ pub fn initialise_plugins(app: AppHandle) {
if entry.metadata().unwrap().is_dir() {
tokio::spawn(async move {
if let Err(error) = initialise_plugin(entry.path()).await {
eprintln!("{}\n\tCaused by: {}", error, error.root_cause());
warn!("Failed to initialise plugin at {}: {}\n\tCaused by: {}", entry.path().display(), error, error.root_cause());
}
});
} else {
eprintln!("Failed to initialise plugin at {}: is a file", entry.path().display());
warn!("Failed to initialise plugin at {}: is a file", entry.path().display());
}
} else if let Err(error) = entry {
eprintln!("Failed to read plugin directory: {}", error)
warn!("Failed to read entry of plugins directory: {}", error)
}
}
}
@@ -220,7 +224,7 @@ async fn init_websocket_server() {
let listener = match TcpListener::bind("localhost:57116").await {
Ok(listener) => listener,
Err(error) => {
eprintln!("Failed to bind to socket: {}", error);
error!("Failed to bind plugin WebSocket server to socket: {}", error);
return;
}
};
@@ -235,7 +239,7 @@ async fn accept_connection(stream: TcpStream) {
let mut socket = match tokio_tungstenite::accept_async(stream).await {
Ok(socket) => socket,
Err(error) => {
eprintln!("Failed to complete WebSocket handshake: {}", error);
warn!("Failed to complete WebSocket handshake: {}", error);
return;
}
};