From d91653b2187d7d8e260c53492ff458948b03a113 Mon Sep 17 00:00:00 2001 From: Tunglies Date: Wed, 26 Mar 2025 16:43:26 +0800 Subject: [PATCH] feat: add config log type and improve window logging --- src-tauri/src/config/config.rs | 17 +++--- src-tauri/src/core/core.rs | 22 +++++--- src-tauri/src/feat/proxy.rs | 8 +-- src-tauri/src/utils/logging.rs | 2 + src-tauri/src/utils/resolve.rs | 99 +++++++++++++++++++--------------- 5 files changed, 84 insertions(+), 64 deletions(-) diff --git a/src-tauri/src/config/config.rs b/src-tauri/src/config/config.rs index 10c37b01..26fb68a5 100644 --- a/src-tauri/src/config/config.rs +++ b/src-tauri/src/config/config.rs @@ -2,8 +2,8 @@ use super::{Draft, IClashTemp, IProfiles, IRuntime, IVerge}; use crate::{ config::PrfItem, core::{handle, CoreManager}, - enhance, - utils::{dirs, help}, + enhance, logging, + utils::{dirs, help, logging::Type}, }; use anyhow::{anyhow, Result}; use once_cell::sync::OnceCell; @@ -75,12 +75,15 @@ impl Config { let validation_result = if config_result.is_ok() { // 验证配置文件 - println!("[首次启动] 开始验证配置"); + logging!(info, Type::Config, true, "开始验证配置"); match CoreManager::global().validate_config().await { Ok((is_valid, error_msg)) => { if !is_valid { - println!( + logging!( + warn, + Type::Config, + true, "[首次启动] 配置验证失败,使用默认最小配置启动: {}", error_msg ); @@ -89,12 +92,12 @@ impl Config { .await?; Some(("config_validate::boot_error", error_msg)) } else { - println!("[首次启动] 配置验证成功"); + logging!(info, Type::Config, true, "配置验证成功"); Some(("config_validate::success", String::new())) } } Err(err) => { - println!("[首次启动] 验证进程执行失败: {}", err); + logging!(warn, Type::Config, true, "验证进程执行失败: {}", err); CoreManager::global() .use_default_config("config_validate::process_terminated", "") .await?; @@ -102,7 +105,7 @@ impl Config { } } } else { - println!("[首次启动] 生成配置文件失败,使用默认配置"); + logging!(warn, Type::Config, true, "生成配置文件失败,使用默认配置"); CoreManager::global() .use_default_config("config_validate::error", "") .await?; diff --git a/src-tauri/src/core/core.rs b/src-tauri/src/core/core.rs index 1d34f9b0..38ac585e 100644 --- a/src-tauri/src/core/core.rs +++ b/src-tauri/src/core/core.rs @@ -188,16 +188,22 @@ impl CoreManager { return Ok((true, String::new())); } - logging!(info, Type::Core, true, "开始验证配置文件: {}", config_path); + logging!( + info, + Type::Config, + true, + "开始验证配置文件: {}", + config_path + ); let clash_core = { Config::verge().latest().clash_core.clone() }; let clash_core = clash_core.unwrap_or("verge-mihomo".into()); - logging!(info, Type::Core, true, "使用内核: {}", clash_core); + logging!(info, Type::Config, true, "使用内核: {}", clash_core); let app_handle = handle::Handle::global().app_handle().unwrap(); let test_dir = dirs::app_home_dir()?.join("test"); let test_dir = dirs::path_to_str(&test_dir)?; - logging!(info, Type::Core, true, "测试目录: {}", test_dir); + logging!(info, Type::Config, true, "测试目录: {}", test_dir); // 使用子进程运行clash验证配置 let output = app_handle @@ -215,14 +221,14 @@ impl CoreManager { let has_error = !output.status.success() || error_keywords.iter().any(|&kw| stderr.contains(kw)); - logging!(info, Type::Core, true, "-------- 验证结果 --------"); + logging!(info, Type::Config, true, "-------- 验证结果 --------"); if !stderr.is_empty() { logging!(info, Type::Core, true, "stderr输出:\n{}", stderr); } if has_error { - logging!(info, Type::Core, true, "发现错误,开始处理错误信息"); + logging!(info, Type::Config, true, "发现错误,开始处理错误信息"); let error_msg = if !stdout.is_empty() { stdout.to_string() } else if !stderr.is_empty() { @@ -233,11 +239,11 @@ impl CoreManager { "验证进程被终止".to_string() }; - logging!(info, Type::Core, true, "-------- 验证结束 --------\n"); + logging!(info, Type::Config, true, "-------- 验证结束 --------"); Ok((false, error_msg)) // 返回错误消息给调用者处理 } else { - logging!(info, Type::Core, true, "验证成功"); - logging!(info, Type::Core, true, "-------- 验证结束 --------\n"); + logging!(info, Type::Config, true, "验证成功"); + logging!(info, Type::Config, true, "-------- 验证结束 --------"); Ok((true, String::new())) } } diff --git a/src-tauri/src/feat/proxy.rs b/src-tauri/src/feat/proxy.rs index cb7febb0..d5afe0cb 100644 --- a/src-tauri/src/feat/proxy.rs +++ b/src-tauri/src/feat/proxy.rs @@ -1,12 +1,6 @@ use crate::{ config::{Config, IVerge}, - core::{ - handle, - service::{install_service, is_service_available, reinstall_service}, - CoreManager, - }, - logging, logging_error, - utils::logging::Type, + core::handle, }; use std::env; use tauri_plugin_clipboard_manager::ClipboardExt; diff --git a/src-tauri/src/utils/logging.rs b/src-tauri/src/utils/logging.rs index f59f05b7..a2e00b4f 100644 --- a/src-tauri/src/utils/logging.rs +++ b/src-tauri/src/utils/logging.rs @@ -6,6 +6,7 @@ pub enum Type { Service, Hotkey, Window, + Config, } impl fmt::Display for Type { @@ -15,6 +16,7 @@ impl fmt::Display for Type { Type::Service => write!(f, "[Service]"), Type::Hotkey => write!(f, "[Hotkey]"), Type::Window => write!(f, "[Window]"), + Type::Config => write!(f, "[Config]"), } } } diff --git a/src-tauri/src/utils/resolve.rs b/src-tauri/src/utils/resolve.rs index a3149d6e..a07e79c1 100644 --- a/src-tauri/src/utils/resolve.rs +++ b/src-tauri/src/utils/resolve.rs @@ -3,9 +3,9 @@ use crate::AppHandleManager; use crate::{ config::{Config, IVerge, PrfItem}, core::*, - log_err, + log_err, logging, module::lightweight, - utils::{error, init, server}, + utils::{error, init, logging::Type, server}, wrap_err, }; use anyhow::{bail, Result}; @@ -62,34 +62,34 @@ pub async fn resolve_setup(app: &mut App) { log::trace!(target:"app", "init config"); log_err!(Config::init_config().await); - if service::check_service().await.is_err() { - match service::install_service().await { - Ok(_) => { - log::info!(target:"app", "install service susccess."); - #[cfg(not(target_os = "macos"))] - std::thread::sleep(std::time::Duration::from_millis(1000)); - #[cfg(target_os = "macos")] - { - let mut service_runing = false; - for _ in 0..40 { - if service::check_service().await.is_ok() { - service_runing = true; - break; - } else { - log::warn!(target: "app", "service not runing, sleep 500ms and check again."); - std::thread::sleep(std::time::Duration::from_millis(500)); - } - } - if !service_runing { - log::warn!(target: "app", "service not running, will fallback to user mode"); - } - } - } - Err(e) => { - log::warn!(target: "app", "failed to install service: {e:?}, will fallback to user mode"); - } - } - } + // if service::check_service().await.is_err() { + // match service::install_service().await { + // Ok(_) => { + // log::info!(target:"app", "install service susccess."); + // #[cfg(not(target_os = "macos"))] + // std::thread::sleep(std::time::Duration::from_millis(1000)); + // #[cfg(target_os = "macos")] + // { + // let mut service_runing = false; + // for _ in 0..40 { + // if service::check_service().await.is_ok() { + // service_runing = true; + // break; + // } else { + // log::warn!(target: "app", "service not runing, sleep 500ms and check again."); + // std::thread::sleep(std::time::Duration::from_millis(500)); + // } + // } + // if !service_runing { + // log::warn!(target: "app", "service not running, will fallback to user mode"); + // } + // } + // } + // Err(e) => { + // log::warn!(target: "app", "failed to install service: {e:?}, will fallback to user mode"); + // } + // } + // } log::trace!(target: "app", "launch core"); log_err!(CoreManager::global().init().await); @@ -138,20 +138,27 @@ pub fn resolve_reset() { /// create main window pub fn create_window() { - println!("Starting to create window"); - log::info!(target: "app", "Starting to create window"); + logging!(info, Type::Window, true, "Creating window"); let app_handle = handle::Handle::global().app_handle().unwrap(); #[cfg(target_os = "macos")] AppHandleManager::global().set_activation_policy_regular(); if let Some(window) = handle::Handle::global().get_window() { - println!("Found existing window, trying to show it"); - log::info!(target: "app", "Found existing window, trying to show it"); + logging!( + info, + Type::Window, + true, + "Found existing window, attempting to restore visibility" + ); if window.is_minimized().unwrap_or(false) { - println!("Window is minimized, unminimizing"); - log::info!(target: "app", "Window is minimized, unminimizing"); + logging!( + info, + Type::Window, + true, + "Window is minimized, restoring window state" + ); let _ = window.unminimize(); } let _ = window.show(); @@ -159,8 +166,7 @@ pub fn create_window() { return; } - println!("Creating new window"); - log::info!(target: "app", "Creating new window"); + logging!(info, Type::Window, true, "Creating new application window"); #[cfg(target_os = "windows")] let window = tauri::WebviewWindowBuilder::new( @@ -206,8 +212,12 @@ pub fn create_window() { match window { Ok(window) => { - println!("Window created successfully, attempting to show"); - log::info!(target: "app", "Window created successfully, attempting to show"); + logging!( + info, + Type::Window, + true, + "Window created successfully, making window visible" + ); let _ = window.show(); let _ = window.set_focus(); @@ -215,8 +225,13 @@ pub fn create_window() { crate::feat::setup_window_state_monitor(&app_handle); } Err(e) => { - println!("Failed to create window: {:?}", e); - log::error!(target: "app", "Failed to create window: {:?}", e); + logging!( + error, + Type::Window, + true, + "Failed to create window: {:?}", + e + ); } } }