mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-11-10 04:12:08 +08:00
refactor(log): in-place writer lifecycle and span-based core observability (#7889)
* refactor(log): migrate logging to tracing-estuary pipeline Swap flexi_logger + clash-verge-logger wiring for the tracing-estuary crate: buffered file sink with explicit panic/exit drains, live level switching, and tokio-trace/chrome-trace behind crate features. AsyncLogger moves in-house (VecDeque ring); file format and rotation stay unchanged. * fix(log): reset sidecar writer in place and re-pin service-ipc v2.6.7 Rebuilding the sidecar FileLogWriter on config changes leaked flexi's unstoppable flusher thread plus an fd each time; the writer is now flushed and reset in place, matching what the service crate does. get_clash_logs_by_service drops the CompactString conversion layer now that service-ipc v2.6.7 returns plain Vec<String>, and AsyncLogger is renamed LogRing to match. * refactor(log): span-based observability and log noise cleanup Instrument spans carry the structure flat lines never could: the core-start spine (mode, readiness/owner generations, pid, config file), proxy apply and clear routes with guard generations, service IPC sessions with refusal codes and outcomes, profile-switch terminal outcomes, subscription fetch strategies, core upgrades with per-proxy version probes, backup flows, timer tasks, config generation uids, and the startup setup flow; running-mode changes emit one guarded transition event each. ~90 hand-written noise lines are gone or demoted (entry+success pairs, polled getter echoes, phase brackets, window sub-steps, platform install chatter); errors keep their anyhow chain, operation name, and item id, and swallowed retry results surface per attempt.
This commit is contained in:
@@ -23,7 +23,11 @@ pub async fn toggle_system_proxy() -> Option<bool> {
|
||||
&& auto_close_connection
|
||||
&& let Err(err) = handle::Handle::mihomo().close_all_connections().await
|
||||
{
|
||||
logging!(error, Type::ProxyMode, "Failed to close all connections: {err}");
|
||||
logging!(
|
||||
error,
|
||||
Type::ProxyMode,
|
||||
"toggle system proxy: failed to close all connections: {err}"
|
||||
);
|
||||
}
|
||||
|
||||
let requested = !current;
|
||||
@@ -42,7 +46,7 @@ pub async fn toggle_system_proxy() -> Option<bool> {
|
||||
match patch_result {
|
||||
Ok(_) => Some(requested),
|
||||
Err(err) => {
|
||||
logging!(error, Type::ProxyMode, "{err:#}");
|
||||
logging!(error, Type::ProxyMode, "toggle system proxy failed: {err:#}");
|
||||
report_toggle_failure(&err).await;
|
||||
None
|
||||
}
|
||||
@@ -84,7 +88,7 @@ pub async fn toggle_tun_mode(not_save_file: Option<bool>) -> bool {
|
||||
Config::verge().await.latest_arc().enable_tun_mode.unwrap_or(false)
|
||||
}
|
||||
Err(err) => {
|
||||
logging!(error, Type::ProxyMode, "{err:#}");
|
||||
logging!(error, Type::ProxyMode, "toggle tun mode failed: {err:#}");
|
||||
current
|
||||
}
|
||||
}
|
||||
@@ -133,7 +137,7 @@ pub async fn copy_clash_env() {
|
||||
}
|
||||
};
|
||||
|
||||
if clipboard.write_text(&export_text).is_err() {
|
||||
logging!(error, Type::ProxyMode, "Failed to write to clipboard");
|
||||
if let Err(err) = clipboard.write_text(&export_text) {
|
||||
logging!(error, Type::ProxyMode, "Failed to write to clipboard: {err}");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user