diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 35cd86855..1563b9b46 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1115,6 +1115,7 @@ dependencies = [ "base64 0.22.1", "boa_engine", "chrono", + "clash-verge-logging", "clash_verge_logger", "clash_verge_service_ipc", "compact_str", @@ -1176,6 +1177,16 @@ dependencies = [ "zip 6.0.0", ] +[[package]] +name = "clash-verge-logging" +version = "0.1.0" +dependencies = [ + "compact_str", + "flexi_logger", + "log", + "tokio", +] + [[package]] name = "clash_verge_logger" version = "0.2.0" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 67a142f6f..e9ecdbf4b 100755 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -10,6 +10,19 @@ edition = "2024" build = "build.rs" rust-version = "1.91" +[workspace] +members = ["crates/*"] +resolver = "2" + +[features] +default = ["custom-protocol"] +custom-protocol = ["tauri/custom-protocol"] +verge-dev = ["clash_verge_logger/color"] +tauri-dev = ["clash-verge-logging/tauri-dev"] +tokio-trace = ["console-subscriber"] +clippy = ["tauri/test"] +tracing = [] + [package.metadata.bundle] identifier = "io.github.clash-verge-rev.clash-verge-rev" @@ -17,13 +30,16 @@ identifier = "io.github.clash-verge-rev.clash-verge-rev" tauri-build = { version = "2.5.2", features = [] } [dependencies] +clash-verge-logging = { path = "crates/clash-verge-logging" } parking_lot = { workspace = true } anyhow = { workspace = true } tokio = { workspace = true } draft = { workspace = true } +compact_str = { workspace = true } +flexi_logger = { workspace = true } +log = { workspace = true } warp = { version = "0.4.2", features = ["server"] } open = "5.3.2" -log = "0.4.28" dunce = "1.0.5" nanoid = "0.4" chrono = "0.4.42" @@ -69,9 +85,7 @@ scopeguard = "1.2.0" tauri-plugin-notification = "2.3.3" tokio-stream = "0.1.17" backoff = { version = "0.4.0", features = ["tokio"] } -compact_str = { version = "0.9.0", features = ["serde"] } tauri-plugin-http = "2.5.4" -flexi_logger = "0.31.7" console-subscriber = { version = "0.5.0", optional = true } tauri-plugin-devtools = { version = "2.0.1" } tauri-plugin-mihomo = { git = "https://github.com/clash-verge-rev/tauri-plugin-mihomo" } @@ -133,19 +147,9 @@ tokio = { version = "1.48.0", features = [ "time", "sync", ] } - -[workspace] -members = ["crates/*"] -resolver = "2" - -[features] -default = ["custom-protocol"] -custom-protocol = ["tauri/custom-protocol"] -verge-dev = ["clash_verge_logger/color"] -tauri-dev = [] -tokio-trace = ["console-subscriber"] -clippy = ["tauri/test"] -tracing = [] +compact_str = { version = "0.9.0", features = ["serde"] } +flexi_logger = "0.31.7" +log = "0.4.28" [profile.release] panic = "abort" diff --git a/src-tauri/crates/clash-verge-logging/Cargo.toml b/src-tauri/crates/clash-verge-logging/Cargo.toml new file mode 100644 index 000000000..d0f43ddfd --- /dev/null +++ b/src-tauri/crates/clash-verge-logging/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "clash-verge-logging" +version = "0.1.0" +edition = "2024" + +[dependencies] +log = { workspace = true } +tokio = { workspace = true } +compact_str = { workspace = true } +flexi_logger = { workspace = true } + +[features] +default = [] +tauri-dev = [] \ No newline at end of file diff --git a/src-tauri/src/utils/logging.rs b/src-tauri/crates/clash-verge-logging/src/lib.rs similarity index 87% rename from src-tauri/src/utils/logging.rs rename to src-tauri/crates/clash-verge-logging/src/lib.rs index f78c9a55a..bb8672f53 100644 --- a/src-tauri/src/utils/logging.rs +++ b/src-tauri/crates/clash-verge-logging/src/lib.rs @@ -34,6 +34,7 @@ pub enum Type { } impl fmt::Display for Type { + #[inline] fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Self::Cmd => write!(f, "[Cmd]"), @@ -58,29 +59,6 @@ impl fmt::Display for Type { } } -#[macro_export] -macro_rules! error { - ($result: expr) => { - log::error!(target: "app", "{}", $result); - }; -} - -/// wrap the anyhow error -/// transform the error to String -#[macro_export] -macro_rules! wrap_err { - // Case 1: Future> - ($stat:expr, async) => {{ - match $stat.await { - Ok(a) => Ok::<_, ::anyhow::Error>(a), - Err(err) => { - log::error!(target: "app", "{}", err); - Err(::anyhow::Error::msg(err.to_string())) - } - } - }}; -} - #[macro_export] macro_rules! logging { // 不带 print 参数的版本(默认不打印) @@ -104,6 +82,7 @@ macro_rules! logging_error { }; } +#[inline] pub fn write_sidecar_log( writer: MutexGuard<'_, FileLogWriter>, now: &mut DeferredNow, @@ -143,6 +122,7 @@ impl<'a> NoModuleFilter<'a> { #[cfg(not(feature = "tauri-dev"))] impl<'a> LogLineFilter for NoModuleFilter<'a> { + #[inline] fn write( &self, now: &mut DeferredNow, diff --git a/src-tauri/src/cmd/app.rs b/src-tauri/src/cmd/app.rs index f7cf77fb9..1e0f29422 100644 --- a/src-tauri/src/cmd/app.rs +++ b/src-tauri/src/cmd/app.rs @@ -3,12 +3,10 @@ use crate::core::sysopt::Sysopt; use crate::utils::resolve::ui::{self, UiReadyStage}; use crate::{ cmd::StringifyErr as _, - feat, logging, - utils::{ - dirs::{self, PathBufExec as _}, - logging::Type, - }, + feat, + utils::dirs::{self, PathBufExec as _}, }; +use clash_verge_logging::{Type, logging}; use smartstring::alias::String; use std::path::Path; use tauri::{AppHandle, Manager as _}; diff --git a/src-tauri/src/cmd/clash.rs b/src-tauri/src/cmd/clash.rs index ab37a4b3d..48297281c 100644 --- a/src-tauri/src/cmd/clash.rs +++ b/src-tauri/src/cmd/clash.rs @@ -1,4 +1,5 @@ use super::CmdResult; +use crate::feat; use crate::utils::dirs; use crate::{ cmd::StringifyErr as _, @@ -6,7 +7,7 @@ use crate::{ constants, core::{CoreManager, handle, validate::CoreConfigValidator}, }; -use crate::{feat, logging, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; use compact_str::CompactString; use serde_yaml_ng::Mapping; use smartstring::alias::String; diff --git a/src-tauri/src/cmd/media_unlock_checker/bahamut.rs b/src-tauri/src/cmd/media_unlock_checker/bahamut.rs index 960011745..7a6a83f79 100644 --- a/src-tauri/src/cmd/media_unlock_checker/bahamut.rs +++ b/src-tauri/src/cmd/media_unlock_checker/bahamut.rs @@ -1,10 +1,9 @@ use std::sync::Arc; +use clash_verge_logging::{Type, logging}; use regex::Regex; use reqwest::{Client, cookie::Jar}; -use crate::{logging, utils::logging::Type}; - use super::UnlockItem; use super::utils::{country_code_to_emoji, get_local_date_string}; diff --git a/src-tauri/src/cmd/media_unlock_checker/disney_plus.rs b/src-tauri/src/cmd/media_unlock_checker/disney_plus.rs index dc18978eb..084f44e90 100644 --- a/src-tauri/src/cmd/media_unlock_checker/disney_plus.rs +++ b/src-tauri/src/cmd/media_unlock_checker/disney_plus.rs @@ -1,7 +1,7 @@ use regex::Regex; use reqwest::Client; -use crate::{logging, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; use super::UnlockItem; use super::utils::{country_code_to_emoji, get_local_date_string}; diff --git a/src-tauri/src/cmd/media_unlock_checker/gemini.rs b/src-tauri/src/cmd/media_unlock_checker/gemini.rs index 4701bb6ef..e9412a1fb 100644 --- a/src-tauri/src/cmd/media_unlock_checker/gemini.rs +++ b/src-tauri/src/cmd/media_unlock_checker/gemini.rs @@ -1,7 +1,7 @@ use regex::Regex; use reqwest::Client; -use crate::{logging, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; use super::UnlockItem; use super::utils::{country_code_to_emoji, get_local_date_string}; diff --git a/src-tauri/src/cmd/media_unlock_checker/mod.rs b/src-tauri/src/cmd/media_unlock_checker/mod.rs index c01df2926..6cb6389a8 100644 --- a/src-tauri/src/cmd/media_unlock_checker/mod.rs +++ b/src-tauri/src/cmd/media_unlock_checker/mod.rs @@ -4,7 +4,7 @@ use reqwest::Client; use tauri::command; use tokio::{sync::Mutex, task::JoinSet}; -use crate::{logging, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; mod bahamut; mod bilibili; diff --git a/src-tauri/src/cmd/media_unlock_checker/netflix.rs b/src-tauri/src/cmd/media_unlock_checker/netflix.rs index bc1bc30b2..63def9f5d 100644 --- a/src-tauri/src/cmd/media_unlock_checker/netflix.rs +++ b/src-tauri/src/cmd/media_unlock_checker/netflix.rs @@ -1,7 +1,7 @@ use reqwest::Client; use serde_json::Value; -use crate::{logging, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; use super::UnlockItem; use super::utils::{country_code_to_emoji, get_local_date_string}; diff --git a/src-tauri/src/cmd/media_unlock_checker/prime_video.rs b/src-tauri/src/cmd/media_unlock_checker/prime_video.rs index fb76723d1..978c7d7c7 100644 --- a/src-tauri/src/cmd/media_unlock_checker/prime_video.rs +++ b/src-tauri/src/cmd/media_unlock_checker/prime_video.rs @@ -1,7 +1,7 @@ use regex::Regex; use reqwest::Client; -use crate::{logging, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; use super::UnlockItem; use super::utils::{country_code_to_emoji, get_local_date_string}; diff --git a/src-tauri/src/cmd/media_unlock_checker/youtube.rs b/src-tauri/src/cmd/media_unlock_checker/youtube.rs index d7caf6f45..cc1aa82f2 100644 --- a/src-tauri/src/cmd/media_unlock_checker/youtube.rs +++ b/src-tauri/src/cmd/media_unlock_checker/youtube.rs @@ -1,7 +1,7 @@ use regex::Regex; use reqwest::Client; -use crate::{logging, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; use super::UnlockItem; use super::utils::{country_code_to_emoji, get_local_date_string}; diff --git a/src-tauri/src/cmd/network.rs b/src-tauri/src/cmd/network.rs index ba780962a..ab31de62b 100644 --- a/src-tauri/src/cmd/network.rs +++ b/src-tauri/src/cmd/network.rs @@ -1,6 +1,6 @@ use super::CmdResult; use crate::cmd::StringifyErr as _; -use crate::{logging, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; use gethostname::gethostname; use network_interface::NetworkInterface; use serde_yaml_ng::Mapping; diff --git a/src-tauri/src/cmd/profile.rs b/src-tauri/src/cmd/profile.rs index edb94795a..efb1095d3 100644 --- a/src-tauri/src/cmd/profile.rs +++ b/src-tauri/src/cmd/profile.rs @@ -10,12 +10,13 @@ use crate::{ profiles_append_item_safe, }, core::{CoreManager, handle, timer::Timer, tray::Tray}, - feat, logging, + feat, module::auto_backup::{AutoBackupManager, AutoBackupTrigger}, process::AsyncHandler, ret_err, - utils::{dirs, help, logging::Type}, + utils::{dirs, help}, }; +use clash_verge_logging::{Type, logging}; use scopeguard::defer; use smartstring::alias::String; use std::sync::atomic::{AtomicBool, Ordering}; diff --git a/src-tauri/src/cmd/proxy.rs b/src-tauri/src/cmd/proxy.rs index 6f94f729c..0d74667e5 100644 --- a/src-tauri/src/cmd/proxy.rs +++ b/src-tauri/src/cmd/proxy.rs @@ -1,5 +1,5 @@ use super::CmdResult; -use crate::{logging, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; // TODO: 前端通过 emit 发送更新事件, tray 监听更新事件 /// 同步托盘和GUI的代理选择状态 diff --git a/src-tauri/src/cmd/runtime.rs b/src-tauri/src/cmd/runtime.rs index 9ad80f456..9ad8c3acb 100644 --- a/src-tauri/src/cmd/runtime.rs +++ b/src-tauri/src/cmd/runtime.rs @@ -1,8 +1,7 @@ use super::CmdResult; -use crate::{ - cmd::StringifyErr as _, config::Config, core::CoreManager, logging_error, utils::logging::Type, -}; +use crate::{cmd::StringifyErr as _, config::Config, core::CoreManager}; use anyhow::{Context as _, anyhow}; +use clash_verge_logging::{Type, logging_error}; use serde_yaml_ng::Mapping; use smartstring::alias::String; use std::collections::HashMap; diff --git a/src-tauri/src/cmd/save_profile.rs b/src-tauri/src/cmd/save_profile.rs index ed271504b..9ccbce15a 100644 --- a/src-tauri/src/cmd/save_profile.rs +++ b/src-tauri/src/cmd/save_profile.rs @@ -3,10 +3,10 @@ use crate::{ cmd::StringifyErr as _, config::{Config, PrfItem}, core::{CoreManager, handle, validate::CoreConfigValidator}, - logging, module::auto_backup::{AutoBackupManager, AutoBackupTrigger}, - utils::{dirs, logging::Type}, + utils::dirs, }; +use clash_verge_logging::{Type, logging}; use smartstring::alias::String; use tokio::fs; diff --git a/src-tauri/src/cmd/system.rs b/src-tauri/src/cmd/system.rs index 8b282ff3f..01bd55a00 100644 --- a/src-tauri/src/cmd/system.rs +++ b/src-tauri/src/cmd/system.rs @@ -3,10 +3,9 @@ use std::sync::Arc; use super::CmdResult; use crate::{ core::{CoreManager, handle, manager::RunningMode}, - logging, module::sysinfo::PlatformSpecification, - utils::logging::Type, }; +use clash_verge_logging::{Type, logging}; #[cfg(target_os = "windows")] use deelevate::{PrivilegeLevel, Token}; use once_cell::sync::Lazy; diff --git a/src-tauri/src/cmd/validate.rs b/src-tauri/src/cmd/validate.rs index a0134f340..ee80675be 100644 --- a/src-tauri/src/cmd/validate.rs +++ b/src-tauri/src/cmd/validate.rs @@ -1,9 +1,6 @@ use super::CmdResult; -use crate::{ - core::{handle, validate::CoreConfigValidator}, - logging, - utils::logging::Type, -}; +use crate::core::{handle, validate::CoreConfigValidator}; +use clash_verge_logging::{Type, logging}; use smartstring::alias::String; /// 发送脚本验证通知消息 diff --git a/src-tauri/src/config/clash.rs b/src-tauri/src/config/clash.rs index 095a0b812..c3dbc9e53 100644 --- a/src-tauri/src/config/clash.rs +++ b/src-tauri/src/config/clash.rs @@ -2,8 +2,8 @@ use crate::config::Config; use crate::constants::{network, tun as tun_const}; use crate::utils::dirs::{ipc_path, path_to_str}; use crate::utils::{dirs, help}; -use crate::{logging, utils::logging::Type}; use anyhow::Result; +use clash_verge_logging::{Type, logging}; use serde::{Deserialize, Serialize}; use serde_yaml_ng::{Mapping, Value}; use std::{ diff --git a/src-tauri/src/config/config.rs b/src-tauri/src/config/config.rs index 316d99c50..a3c9df27a 100644 --- a/src-tauri/src/config/config.rs +++ b/src-tauri/src/config/config.rs @@ -4,11 +4,12 @@ use crate::{ config::{PrfItem, profiles_append_item_safe}, constants::{files, timing}, core::{CoreManager, handle, service, tray, validate::CoreConfigValidator}, - enhance, logging, logging_error, - utils::{dirs, help, logging::Type}, + enhance, + utils::{dirs, help}, }; use anyhow::{Result, anyhow}; use backoff::{Error as BackoffError, ExponentialBackoff}; +use clash_verge_logging::{Type, logging, logging_error}; use draft::Draft; use smartstring::alias::String; use std::path::PathBuf; diff --git a/src-tauri/src/config/profiles.rs b/src-tauri/src/config/profiles.rs index 0f8a83671..3755c828f 100644 --- a/src-tauri/src/config/profiles.rs +++ b/src-tauri/src/config/profiles.rs @@ -3,8 +3,8 @@ use crate::utils::{ dirs::{self, PathBufExec as _}, help, }; -use crate::{logging, utils::logging::Type}; use anyhow::{Context as _, Result, bail}; +use clash_verge_logging::{Type, logging}; use serde::{Deserialize, Serialize}; use serde_yaml_ng::Mapping; use smartstring::alias::String; diff --git a/src-tauri/src/config/verge.rs b/src-tauri/src/config/verge.rs index 70ad8964d..f47e4b02b 100644 --- a/src-tauri/src/config/verge.rs +++ b/src-tauri/src/config/verge.rs @@ -1,10 +1,10 @@ use crate::config::Config; use crate::{ config::{DEFAULT_PAC, deserialize_encrypted, serialize_encrypted}, - logging, - utils::{dirs, help, i18n, logging::Type}, + utils::{dirs, help, i18n}, }; use anyhow::Result; +use clash_verge_logging::{Type, logging}; use log::LevelFilter; use serde::{Deserialize, Serialize}; use smartstring::alias::String; diff --git a/src-tauri/src/core/backup.rs b/src-tauri/src/core/backup.rs index ad3168546..1303ff7bc 100644 --- a/src-tauri/src/core/backup.rs +++ b/src-tauri/src/core/backup.rs @@ -1,12 +1,8 @@ use crate::constants::files::DNS_CONFIG; -use crate::{ - config::Config, - logging, - process::AsyncHandler, - utils::{dirs, logging::Type}, -}; +use crate::{config::Config, process::AsyncHandler, utils::dirs}; use anyhow::Error; use arc_swap::{ArcSwap, ArcSwapOption}; +use clash_verge_logging::{Type, logging}; use once_cell::sync::OnceCell; use reqwest_dav::list_cmd::{ListEntity, ListFile}; use smartstring::alias::String; diff --git a/src-tauri/src/core/hotkey.rs b/src-tauri/src/core/hotkey.rs index 44db1f019..6f7a52b3a 100755 --- a/src-tauri/src/core/hotkey.rs +++ b/src-tauri/src/core/hotkey.rs @@ -1,11 +1,12 @@ use crate::process::AsyncHandler; use crate::utils::notification::{NotificationEvent, notify_event}; use crate::{ - config::Config, core::handle, feat, logging, module::lightweight::entry_lightweight_mode, - singleton_with_logging, utils::logging::Type, + config::Config, core::handle, feat, module::lightweight::entry_lightweight_mode, + singleton_with_logging, }; use anyhow::{Result, bail}; use arc_swap::ArcSwap; +use clash_verge_logging::{Type, logging}; use smartstring::alias::String; use std::{collections::HashMap, fmt, str::FromStr, sync::Arc}; use tauri_plugin_global_shortcut::{Code, GlobalShortcutExt as _, ShortcutState}; diff --git a/src-tauri/src/core/manager/config.rs b/src-tauri/src/core/manager/config.rs index c2d4dca27..ee5fad673 100644 --- a/src-tauri/src/core/manager/config.rs +++ b/src-tauri/src/core/manager/config.rs @@ -3,10 +3,10 @@ use crate::{ config::{Config, ConfigType, IRuntime}, constants::timing, core::{handle, validate::CoreConfigValidator}, - logging, - utils::{dirs, help, logging::Type}, + utils::{dirs, help}, }; use anyhow::{Result, anyhow}; +use clash_verge_logging::{Type, logging}; use smartstring::alias::String; use std::{path::PathBuf, time::Instant}; use tauri_plugin_mihomo::Error as MihomoError; diff --git a/src-tauri/src/core/manager/lifecycle.rs b/src-tauri/src/core/manager/lifecycle.rs index a264f29e9..bd75a76dc 100644 --- a/src-tauri/src/core/manager/lifecycle.rs +++ b/src-tauri/src/core/manager/lifecycle.rs @@ -1,15 +1,12 @@ use super::{CoreManager, RunningMode}; use crate::cmd::StringifyErr as _; use crate::config::{Config, IVerge}; -use crate::{ - core::{ - logger::CLASH_LOGGER, - service::{SERVICE_MANAGER, ServiceStatus}, - }, - logging, - utils::logging::Type, +use crate::core::{ + logger::CLASH_LOGGER, + service::{SERVICE_MANAGER, ServiceStatus}, }; use anyhow::Result; +use clash_verge_logging::{Type, logging}; use smartstring::alias::String; impl CoreManager { diff --git a/src-tauri/src/core/manager/state.rs b/src-tauri/src/core/manager/state.rs index ca2f7db35..f38c6582b 100644 --- a/src-tauri/src/core/manager/state.rs +++ b/src-tauri/src/core/manager/state.rs @@ -5,13 +5,10 @@ use crate::{ core::{handle, logger::CLASH_LOGGER, service}, logging, process::CommandChildGuard, - utils::{ - dirs, - init::sidecar_writer, - logging::{SharedWriter, Type, write_sidecar_log}, - }, + utils::{dirs, init::sidecar_writer}, }; use anyhow::Result; +use clash_verge_logging::{SharedWriter, Type, write_sidecar_log}; use compact_str::CompactString; use flexi_logger::DeferredNow; use log::Level; diff --git a/src-tauri/src/core/notification.rs b/src-tauri/src/core/notification.rs index fba5ecaa1..7e12a263d 100644 --- a/src-tauri/src/core/notification.rs +++ b/src-tauri/src/core/notification.rs @@ -1,9 +1,6 @@ use super::handle::Handle; -use crate::{ - constants::{retry, timing}, - logging, - utils::logging::Type, -}; +use crate::constants::{retry, timing}; +use clash_verge_logging::{Type, logging}; use parking_lot::RwLock; use smartstring::alias::String; use std::{ diff --git a/src-tauri/src/core/service.rs b/src-tauri/src/core/service.rs index 2245ea8ed..5c378e6f1 100644 --- a/src-tauri/src/core/service.rs +++ b/src-tauri/src/core/service.rs @@ -1,10 +1,10 @@ use crate::{ config::Config, core::tray, - logging, logging_error, - utils::{dirs, init::service_writer_config, logging::Type}, + utils::{dirs, init::service_writer_config}, }; use anyhow::{Context as _, Result, bail}; +use clash_verge_logging::{Type, logging, logging_error}; use clash_verge_service_ipc::CoreConfig; use compact_str::CompactString; use once_cell::sync::Lazy; diff --git a/src-tauri/src/core/sysopt.rs b/src-tauri/src/core/sysopt.rs index 6af30efd1..46dd88bbb 100644 --- a/src-tauri/src/core/sysopt.rs +++ b/src-tauri/src/core/sysopt.rs @@ -3,10 +3,10 @@ use crate::utils::autostart as startup_shortcut; use crate::{ config::{Config, IVerge}, core::handle::Handle, - logging, logging_error, singleton_lazy, - utils::logging::Type, + singleton_lazy, }; use anyhow::Result; +use clash_verge_logging::{Type, logging, logging_error}; use parking_lot::RwLock; use scopeguard::defer; use smartstring::alias::String; diff --git a/src-tauri/src/core/timer.rs b/src-tauri/src/core/timer.rs index 08ee68395..6905837ff 100644 --- a/src-tauri/src/core/timer.rs +++ b/src-tauri/src/core/timer.rs @@ -1,10 +1,10 @@ use crate::{ config::Config, core::{CoreManager, manager::RunningMode, sysopt::Sysopt}, - feat, logging, logging_error, singleton, - utils::logging::Type, + feat, singleton, }; use anyhow::{Context as _, Result}; +use clash_verge_logging::{Type, logging, logging_error}; use delay_timer::prelude::{DelayTimer, DelayTimerBuilder, TaskBuilder}; use parking_lot::RwLock; use smartstring::alias::String; diff --git a/src-tauri/src/core/validate.rs b/src-tauri/src/core/validate.rs index 330c96f3c..96dd03959 100644 --- a/src-tauri/src/core/validate.rs +++ b/src-tauri/src/core/validate.rs @@ -9,7 +9,7 @@ use crate::config::{Config, ConfigType}; use crate::core::handle; use crate::singleton_lazy; use crate::utils::dirs; -use crate::{logging, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; pub struct CoreConfigValidator { is_processing: AtomicBool, diff --git a/src-tauri/src/enhance/merge.rs b/src-tauri/src/enhance/merge.rs index b93829e41..fb65d7f67 100644 --- a/src-tauri/src/enhance/merge.rs +++ b/src-tauri/src/enhance/merge.rs @@ -1,4 +1,4 @@ -use crate::{logging, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; use super::use_lowercase; use serde_yaml_ng::{self, Mapping, Value}; diff --git a/src-tauri/src/enhance/mod.rs b/src-tauri/src/enhance/mod.rs index 9d8c43856..df63f3220 100644 --- a/src-tauri/src/enhance/mod.rs +++ b/src-tauri/src/enhance/mod.rs @@ -16,7 +16,7 @@ use self::{ use crate::constants; use crate::utils::dirs; use crate::{config::Config, utils::tmpl}; -use crate::{logging, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; use serde_yaml_ng::Mapping; use smartstring::alias::String; use std::collections::{HashMap, HashSet}; diff --git a/src-tauri/src/feat/backup.rs b/src-tauri/src/feat/backup.rs index f24925951..a155bafc6 100644 --- a/src-tauri/src/feat/backup.rs +++ b/src-tauri/src/feat/backup.rs @@ -1,16 +1,15 @@ use crate::{ config::{Config, IVerge}, core::backup, - logging, process::AsyncHandler, utils::{ dirs::{PathBufExec as _, app_home_dir, local_backup_dir, verge_path}, help, - logging::Type, }, }; use anyhow::{Result, anyhow}; use chrono::Utc; +use clash_verge_logging::{Type, logging}; use reqwest_dav::list_cmd::ListFile; use serde::Serialize; use smartstring::alias::String; diff --git a/src-tauri/src/feat/clash.rs b/src-tauri/src/feat/clash.rs index 43e76157a..84f49b6d7 100644 --- a/src-tauri/src/feat/clash.rs +++ b/src-tauri/src/feat/clash.rs @@ -1,10 +1,10 @@ use crate::{ config::Config, core::{CoreManager, handle, tray}, - logging, logging_error, process::AsyncHandler, - utils::{self, logging::Type, resolve}, + utils::{self, resolve}, }; +use clash_verge_logging::{Type, logging, logging_error}; use serde_yaml_ng::{Mapping, Value}; use smartstring::alias::String; diff --git a/src-tauri/src/feat/config.rs b/src-tauri/src/feat/config.rs index d9932f79d..e6a7e9d43 100644 --- a/src-tauri/src/feat/config.rs +++ b/src-tauri/src/feat/config.rs @@ -1,11 +1,10 @@ use crate::{ config::{Config, IVerge}, core::{CoreManager, handle, hotkey, sysopt, tray}, - logging, logging_error, module::{auto_backup::AutoBackupManager, lightweight}, - utils::logging::Type, }; use anyhow::Result; +use clash_verge_logging::{Type, logging, logging_error}; use draft::SharedBox; use serde_yaml_ng::Mapping; diff --git a/src-tauri/src/feat/profile.rs b/src-tauri/src/feat/profile.rs index 83446aeb9..c32e7cf22 100644 --- a/src-tauri/src/feat/profile.rs +++ b/src-tauri/src/feat/profile.rs @@ -2,10 +2,9 @@ use crate::{ cmd, config::{Config, PrfItem, PrfOption, profiles::profiles_draft_update_item_safe}, core::{CoreManager, handle, tray}, - logging, logging_error, - utils::logging::Type, }; use anyhow::{Result, bail}; +use clash_verge_logging::{Type, logging, logging_error}; use smartstring::alias::String; use tauri::Emitter as _; diff --git a/src-tauri/src/feat/proxy.rs b/src-tauri/src/feat/proxy.rs index 69d4e0339..87494319d 100644 --- a/src-tauri/src/feat/proxy.rs +++ b/src-tauri/src/feat/proxy.rs @@ -1,9 +1,8 @@ use crate::{ config::{Config, IVerge}, core::handle, - logging, - utils::logging::Type, }; +use clash_verge_logging::{Type, logging}; use std::env; use tauri_plugin_clipboard_manager::ClipboardExt as _; diff --git a/src-tauri/src/feat/window.rs b/src-tauri/src/feat/window.rs index 9e741258d..b54ae5666 100644 --- a/src-tauri/src/feat/window.rs +++ b/src-tauri/src/feat/window.rs @@ -1,8 +1,9 @@ use crate::config::Config; use crate::core::{CoreManager, handle, sysopt}; +use crate::module::lightweight; use crate::utils; use crate::utils::window_manager::WindowManager; -use crate::{logging, module::lightweight, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; /// Public API: open or close the dashboard pub async fn open_or_close_dashboard() { diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index e55613c5b..1e1beb746 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -19,13 +19,13 @@ use crate::{ utils::{resolve, server}, }; use anyhow::Result; +use clash_verge_logging::{Type, logging}; use once_cell::sync::OnceCell; use rust_i18n::i18n; use tauri::{AppHandle, Manager as _}; #[cfg(target_os = "macos")] use tauri_plugin_autostart::MacosLauncher; use tauri_plugin_deep_link::DeepLinkExt as _; -use utils::logging::Type; i18n!("locales", fallback = "zh"); @@ -267,10 +267,9 @@ pub fn run() { use crate::{ config::Config, core::{self, handle, hotkey}, - logging, process::AsyncHandler, - utils::logging::Type, }; + use clash_verge_logging::{Type, logging}; use tauri::AppHandle; #[cfg(target_os = "macos")] use tauri::Manager as _; diff --git a/src-tauri/src/module/auto_backup.rs b/src-tauri/src/module/auto_backup.rs index 2cb9c89bb..6c6b2dbc7 100644 --- a/src-tauri/src/module/auto_backup.rs +++ b/src-tauri/src/module/auto_backup.rs @@ -1,12 +1,12 @@ use crate::{ config::{Config, IVerge}, feat::create_local_backup_with_namer, - logging, process::AsyncHandler, - utils::{dirs::local_backup_dir, logging::Type}, + utils::dirs::local_backup_dir, }; use anyhow::Result; use chrono::Local; +use clash_verge_logging::{Type, logging}; use once_cell::sync::OnceCell; use parking_lot::RwLock; use std::{ diff --git a/src-tauri/src/module/lightweight.rs b/src-tauri/src/module/lightweight.rs index 20e26b144..e91837426 100644 --- a/src-tauri/src/module/lightweight.rs +++ b/src-tauri/src/module/lightweight.rs @@ -1,12 +1,10 @@ use crate::{ config::Config, core::{handle, timer::Timer, tray::Tray}, - logging, process::AsyncHandler, - utils::logging::Type, }; -use crate::logging_error; +use clash_verge_logging::{Type, logging, logging_error}; use crate::utils::window_manager::WindowManager; use anyhow::{Context as _, Result}; diff --git a/src-tauri/src/module/signal/unix.rs b/src-tauri/src/module/signal/unix.rs index 866dce4e2..fa131991b 100644 --- a/src-tauri/src/module/signal/unix.rs +++ b/src-tauri/src/module/signal/unix.rs @@ -4,7 +4,8 @@ use signal_hook::{ low_level, }; -use crate::{feat, logging, logging_error, utils::logging::Type}; +use crate::feat; +use clash_verge_logging::{Type, logging, logging_error}; pub fn register() { tauri::async_runtime::spawn(async { diff --git a/src-tauri/src/module/signal/windows.rs b/src-tauri/src/module/signal/windows.rs index f10b415cc..582ab19ef 100644 --- a/src-tauri/src/module/signal/windows.rs +++ b/src-tauri/src/module/signal/windows.rs @@ -8,7 +8,8 @@ use windows_sys::Win32::{ }, }; -use crate::{core::handle, feat, logging, utils::logging::Type}; +use crate::{core::handle, feat}; +use clash_verge_logging::{Type, logging}; // code refer to: // global-hotkey (https://github.com/tauri-apps/global-hotkey) diff --git a/src-tauri/src/utils/autostart.rs b/src-tauri/src/utils/autostart.rs index d898a6d09..3de6d988e 100644 --- a/src-tauri/src/utils/autostart.rs +++ b/src-tauri/src/utils/autostart.rs @@ -1,7 +1,7 @@ #[cfg(target_os = "windows")] -use crate::{logging, utils::logging::Type}; -#[cfg(target_os = "windows")] use anyhow::{Result, anyhow}; +#[cfg(target_os = "windows")] +use clash_verge_logging::{Type, logging}; #[cfg(target_os = "windows")] use std::{os::windows::process::CommandExt as _, path::Path, path::PathBuf}; diff --git a/src-tauri/src/utils/dirs.rs b/src-tauri/src/utils/dirs.rs index f00e33f33..3bda8e60c 100644 --- a/src-tauri/src/utils/dirs.rs +++ b/src-tauri/src/utils/dirs.rs @@ -1,10 +1,7 @@ -use crate::{ - core::{CoreManager, handle, manager::RunningMode}, - logging, - utils::logging::Type, -}; +use crate::core::{CoreManager, handle, manager::RunningMode}; use anyhow::Result; use async_trait::async_trait; +use clash_verge_logging::{Type, logging}; use once_cell::sync::OnceCell; #[cfg(unix)] use std::iter; diff --git a/src-tauri/src/utils/help.rs b/src-tauri/src/utils/help.rs index 22361d986..1206ff57a 100644 --- a/src-tauri/src/utils/help.rs +++ b/src-tauri/src/utils/help.rs @@ -1,5 +1,6 @@ -use crate::{config::with_encryption, enhance::seq::SeqMap, logging, utils::logging::Type}; +use crate::{config::with_encryption, enhance::seq::SeqMap}; use anyhow::{Context as _, Result, anyhow, bail}; +use clash_verge_logging::{Type, logging}; use nanoid::nanoid; use serde::{Serialize, de::DeserializeOwned}; use serde_yaml_ng::Mapping; diff --git a/src-tauri/src/utils/init.rs b/src-tauri/src/utils/init.rs index 12da3446f..d377e9511 100644 --- a/src-tauri/src/utils/init.rs +++ b/src-tauri/src/utils/init.rs @@ -1,6 +1,4 @@ // #[cfg(not(feature = "tracing"))] -#[cfg(not(feature = "tauri-dev"))] -use crate::utils::logging::NoModuleFilter; use crate::{ config::{Config, IClashTemp, IProfiles, IVerge}, constants, @@ -10,11 +8,13 @@ use crate::{ utils::{ dirs::{self, PathBufExec as _, service_log_dir, sidecar_log_dir}, help, - logging::Type, }, }; use anyhow::Result; use chrono::{Local, TimeZone as _}; +#[cfg(not(feature = "tauri-dev"))] +use clash_verge_logging::NoModuleFilter; +use clash_verge_logging::Type; use clash_verge_service_ipc::WriterConfig; use flexi_logger::writers::FileLogWriter; use flexi_logger::{Cleanup, Criterion, FileSpec}; diff --git a/src-tauri/src/utils/linux.rs b/src-tauri/src/utils/linux.rs index e3ced3871..de577cabc 100644 --- a/src-tauri/src/utils/linux.rs +++ b/src-tauri/src/utils/linux.rs @@ -1,6 +1,5 @@ -use crate::logging; -use crate::utils::logging::Type; use anyhow::Result; +use clash_verge_logging::{Type, logging}; use std::collections::{HashMap, HashSet}; use std::env; use std::fs; diff --git a/src-tauri/src/utils/mod.rs b/src-tauri/src/utils/mod.rs index c9c905443..3eb1d30ae 100644 --- a/src-tauri/src/utils/mod.rs +++ b/src-tauri/src/utils/mod.rs @@ -6,7 +6,6 @@ pub mod i18n; pub mod init; #[cfg(target_os = "linux")] pub mod linux; -pub mod logging; pub mod network; pub mod notification; pub mod resolve; diff --git a/src-tauri/src/utils/resolve/dns.rs b/src-tauri/src/utils/resolve/dns.rs index 0896bccaf..12dd86bd8 100644 --- a/src-tauri/src/utils/resolve/dns.rs +++ b/src-tauri/src/utils/resolve/dns.rs @@ -1,8 +1,7 @@ -#[cfg(target_os = "macos")] -use crate::{logging, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; + pub async fn set_public_dns(dns_server: String) { - use crate::utils::logging::Type; - use crate::{core::handle, logging, utils::dirs}; + use crate::{core::handle, utils::dirs}; use tauri_plugin_shell::ShellExt as _; let app_handle = handle::Handle::app_handle(); diff --git a/src-tauri/src/utils/resolve/mod.rs b/src-tauri/src/utils/resolve/mod.rs index 6da25a439..df9d26e52 100644 --- a/src-tauri/src/utils/resolve/mod.rs +++ b/src-tauri/src/utils/resolve/mod.rs @@ -9,11 +9,11 @@ use crate::{ sysopt, tray::Tray, }, - logging, logging_error, module::{auto_backup::AutoBackupManager, lightweight::auto_lightweight_boot, signal}, process::AsyncHandler, - utils::{init, logging::Type, server, window_manager::WindowManager}, + utils::{init, server, window_manager::WindowManager}, }; +use clash_verge_logging::{Type, logging, logging_error}; pub mod dns; pub mod scheme; diff --git a/src-tauri/src/utils/resolve/scheme.rs b/src-tauri/src/utils/resolve/scheme.rs index e36125c22..6fa02230e 100644 --- a/src-tauri/src/utils/resolve/scheme.rs +++ b/src-tauri/src/utils/resolve/scheme.rs @@ -8,9 +8,8 @@ use tauri::Url; use crate::{ config::{Config, PrfItem, profiles}, core::handle, - logging, - utils::logging::Type, }; +use clash_verge_logging::{Type, logging}; pub(super) async fn resolve_scheme(param: &str) -> Result<()> { logging!(info, Type::Config, "received deep link: {param}"); diff --git a/src-tauri/src/utils/resolve/ui.rs b/src-tauri/src/utils/resolve/ui.rs index d93fe9e6f..6c174f332 100644 --- a/src-tauri/src/utils/resolve/ui.rs +++ b/src-tauri/src/utils/resolve/ui.rs @@ -6,7 +6,7 @@ use std::sync::{ }; use tokio::sync::Notify; -use crate::{logging, utils::logging::Type}; +use clash_verge_logging::{Type, logging}; // 获取 UI 是否准备就绪的全局状态 static UI_READY: AtomicBool = AtomicBool::new(false); diff --git a/src-tauri/src/utils/resolve/window.rs b/src-tauri/src/utils/resolve/window.rs index cf8cecd53..0e33ff73a 100644 --- a/src-tauri/src/utils/resolve/window.rs +++ b/src-tauri/src/utils/resolve/window.rs @@ -3,12 +3,9 @@ use tauri::WebviewWindow; use crate::{ config::Config, core::handle, - logging_error, - utils::{ - logging::Type, - resolve::window_script::{INITIAL_LOADING_OVERLAY, WINDOW_INITIAL_SCRIPT}, - }, + utils::resolve::window_script::{INITIAL_LOADING_OVERLAY, WINDOW_INITIAL_SCRIPT}, }; +use clash_verge_logging::{Type, logging_error}; // 定义默认窗口尺寸常量 const DEFAULT_WIDTH: f64 = 940.0; diff --git a/src-tauri/src/utils/server.rs b/src-tauri/src/utils/server.rs index eec96db86..a8b96ff1a 100644 --- a/src-tauri/src/utils/server.rs +++ b/src-tauri/src/utils/server.rs @@ -1,12 +1,12 @@ use super::resolve; use crate::{ config::{Config, DEFAULT_PAC, IVerge}, - logging, logging_error, module::lightweight, process::AsyncHandler, - utils::{logging::Type, window_manager::WindowManager}, + utils::window_manager::WindowManager, }; use anyhow::{Result, bail}; +use clash_verge_logging::{Type, logging, logging_error}; use once_cell::sync::OnceCell; use parking_lot::Mutex; use port_scanner::local_port_available; diff --git a/src-tauri/src/utils/singleton.rs b/src-tauri/src/utils/singleton.rs index 1c79a8ba5..5e31f3a85 100644 --- a/src-tauri/src/utils/singleton.rs +++ b/src-tauri/src/utils/singleton.rs @@ -47,9 +47,9 @@ macro_rules! singleton_with_logging { pub fn global() -> &'static $struct_name { $instance_name.get_or_init(|| { let instance = Self::new(); - $crate::logging!( + clash_verge_logging::logging!( info, - $crate::utils::logging::Type::Setup, + clash_verge_logging::Type::Setup, concat!($struct_name_str, " initialized") ); instance diff --git a/src-tauri/src/utils/window_manager.rs b/src-tauri/src/utils/window_manager.rs index c6a535696..0e8791e9d 100644 --- a/src-tauri/src/utils/window_manager.rs +++ b/src-tauri/src/utils/window_manager.rs @@ -1,8 +1,5 @@ -use crate::{ - core::handle, - logging, - utils::{logging::Type, resolve::window::build_new_window}, -}; +use crate::{core::handle, utils::resolve::window::build_new_window}; +use clash_verge_logging::{Type, logging}; use std::future::Future; use std::pin::Pin; use tauri::{Manager as _, WebviewWindow, Wry};