mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-28 16:30:52 +08:00
fix: can not filiter log level as expected
This commit is contained in:
@@ -591,6 +591,13 @@ pub async fn start_logs_monitoring(level: Option<String>) -> CmdResult {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// 停止日志监控
|
||||
#[tauri::command]
|
||||
pub async fn stop_logs_monitoring() -> CmdResult {
|
||||
ipc::stop_logs_monitoring().await;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// 清除日志
|
||||
#[tauri::command]
|
||||
pub async fn clear_logs() -> CmdResult {
|
||||
|
||||
@@ -153,16 +153,7 @@ impl LogsMonitor {
|
||||
}
|
||||
};
|
||||
|
||||
let url = if filter_level == "info" {
|
||||
"/logs".to_string()
|
||||
} else {
|
||||
let level_param = if filter_level == "all" {
|
||||
"debug"
|
||||
} else {
|
||||
&filter_level
|
||||
};
|
||||
format!("/logs?level={level_param}")
|
||||
};
|
||||
let url = "/logs";
|
||||
|
||||
logging!(
|
||||
info,
|
||||
@@ -173,7 +164,7 @@ impl LogsMonitor {
|
||||
);
|
||||
|
||||
let _ = client
|
||||
.get(&url)
|
||||
.get(url)
|
||||
.timeout(Duration::from_secs(30))
|
||||
.process_lines(|line| {
|
||||
Self::process_log_line(line, &filter_level, monitor_current.clone())
|
||||
@@ -200,6 +191,28 @@ impl LogsMonitor {
|
||||
);
|
||||
}
|
||||
|
||||
pub async fn stop_monitoring(&self) {
|
||||
// Stop monitoring task but keep logs
|
||||
{
|
||||
let mut handle = self.task_handle.write().await;
|
||||
if let Some(task) = handle.take() {
|
||||
task.abort();
|
||||
logging!(
|
||||
info,
|
||||
Type::Ipc,
|
||||
true,
|
||||
"LogsMonitor: Stopped monitoring task"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Reset monitoring level
|
||||
{
|
||||
let mut monitoring_level = self.current_monitoring_level.write().await;
|
||||
*monitoring_level = None;
|
||||
}
|
||||
}
|
||||
|
||||
async fn create_ipc_client() -> Result<
|
||||
(std::path::PathBuf, kode_bridge::IpcStreamClient),
|
||||
Box<dyn std::error::Error + Send + Sync>,
|
||||
@@ -253,26 +266,12 @@ impl LogsMonitor {
|
||||
let mut current = self.current.write().await;
|
||||
current.logs.clear();
|
||||
current.mark_fresh();
|
||||
|
||||
// Also reset monitoring level when clearing logs
|
||||
{
|
||||
let mut monitoring_level = self.current_monitoring_level.write().await;
|
||||
*monitoring_level = None;
|
||||
}
|
||||
|
||||
// Abort current monitoring task
|
||||
{
|
||||
let mut handle = self.task_handle.write().await;
|
||||
if let Some(task) = handle.take() {
|
||||
task.abort();
|
||||
logging!(
|
||||
info,
|
||||
Type::Ipc,
|
||||
true,
|
||||
"LogsMonitor: Stopped monitoring task due to clear_logs"
|
||||
);
|
||||
}
|
||||
}
|
||||
logging!(
|
||||
info,
|
||||
Type::Ipc,
|
||||
true,
|
||||
"LogsMonitor: Cleared frontend logs (monitoring continues)"
|
||||
);
|
||||
}
|
||||
|
||||
pub async fn get_logs_as_json(&self, level: Option<String>) -> serde_json::Value {
|
||||
@@ -309,6 +308,10 @@ pub async fn start_logs_monitoring(level: Option<String>) {
|
||||
LogsMonitor::global().start_monitoring(level).await;
|
||||
}
|
||||
|
||||
pub async fn stop_logs_monitoring() {
|
||||
LogsMonitor::global().stop_monitoring().await;
|
||||
}
|
||||
|
||||
pub async fn clear_logs() {
|
||||
LogsMonitor::global().clear_logs().await;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ pub mod monitor;
|
||||
pub mod traffic;
|
||||
|
||||
pub use general::IpcManager;
|
||||
pub use logs::{clear_logs, get_logs_json, start_logs_monitoring};
|
||||
pub use logs::{clear_logs, get_logs_json, start_logs_monitoring, stop_logs_monitoring};
|
||||
pub use memory::{get_current_memory, get_formatted_memory};
|
||||
pub use traffic::{get_current_traffic, get_formatted_traffic};
|
||||
|
||||
|
||||
@@ -355,6 +355,7 @@ mod app_init {
|
||||
// Logging and monitoring
|
||||
cmd::get_clash_logs,
|
||||
cmd::start_logs_monitoring,
|
||||
cmd::stop_logs_monitoring,
|
||||
cmd::clear_logs,
|
||||
cmd::get_traffic_data,
|
||||
cmd::get_memory_data,
|
||||
|
||||
Reference in New Issue
Block a user