logs translated from Chinese into English

This commit is contained in:
coolcoala
2025-08-23 04:15:49 +03:00
parent db442b2746
commit 10397d0847
20 changed files with 290 additions and 275 deletions

View File

@@ -429,11 +429,11 @@ export const SysproxyViewer = forwardRef<DialogRef>((props, ref) => {
}
}
} catch (err) {
console.warn("代理状态更新失败:", err);
console.warn("Proxy status update failed:", err);
}
}, 50);
} catch (err: any) {
console.error("配置保存失败:", err);
console.error("Configuration save failed:", err);
mutateVerge();
showNotice("error", err.toString());
// setOpen(true);

View File

@@ -56,7 +56,7 @@ export const useProfiles = () => {
// 根据selected的节点选择
const activateSelected = async () => {
try {
console.log("[ActivateSelected] 开始处理代理选择");
console.log("[ActivateSelected] Start processing proxy selection");
const [proxiesData, profileData] = await Promise.all([
getProxies(),
@@ -64,7 +64,9 @@ export const useProfiles = () => {
]);
if (!profileData || !proxiesData) {
console.log("[ActivateSelected] 代理或配置数据不可用,跳过处理");
console.log(
"[ActivateSelected] Proxy or configuration data unavailable, skipping processing",
);
return;
}
@@ -73,19 +75,23 @@ export const useProfiles = () => {
);
if (!current) {
console.log("[ActivateSelected] 未找到当前profile配置");
console.log(
"[ActivateSelected] Current profile configuration not found",
);
return;
}
// 检查是否有saved的代理选择
const { selected = [] } = current;
if (selected.length === 0) {
console.log("[ActivateSelected] 当前profile无保存的代理选择跳过");
console.log(
"[ActivateSelected] The current profile has no saved proxy selection, so it will be skipped",
);
return;
}
console.log(
`[ActivateSelected] 当前profile ${selected.length} 个代理选择配置`,
`[ActivateSelected] The current profile has ${selected.length} proxy selection configurations`,
);
const selectedMap = Object.fromEntries(
@@ -108,7 +114,7 @@ export const useProfiles = () => {
const targetProxy = selectedMap[name];
if (targetProxy != null && targetProxy !== now) {
console.log(
`[ActivateSelected] 需要切换代理组 ${name}: ${now} -> ${targetProxy}`,
`[ActivateSelected] Need to switch proxy groups ${name}: ${now} -> ${targetProxy}`,
);
hasChange = true;
updateProxy(name, targetProxy);
@@ -118,27 +124,36 @@ export const useProfiles = () => {
});
if (!hasChange) {
console.log("[ActivateSelected] 所有代理选择已经是目标状态,无需更新");
console.log(
"[ActivateSelected] All agent selections are already in the target state and do not need to be updated",
);
return;
}
console.log(`[ActivateSelected] 完成代理切换,保存新的选择配置`);
console.log(
`[ActivateSelected] Complete the proxy switch and save the new selection configuration`,
);
try {
await patchProfile(profileData.current!, { selected: newSelected });
console.log("[ActivateSelected] 代理选择配置保存成功");
console.log(
"[ActivateSelected] Proxy selection configuration saved successfully",
);
setTimeout(() => {
mutate("getProxies", getProxies());
}, 100);
} catch (error: any) {
console.error(
"[ActivateSelected] 保存代理选择配置失败:",
"[ActivateSelected] Failed to save proxy selection configuration:",
error.message,
);
}
} catch (error: any) {
console.error("[ActivateSelected] 处理代理选择失败:", error.message);
console.error(
"[ActivateSelected] Handling proxy selection failure:",
error.message,
);
}
};

View File

@@ -66,9 +66,9 @@ root.render(
// 错误处理
window.addEventListener("error", (event) => {
console.error("[main.tsx] 全局错误:", event.error);
console.error("[main.tsx] Global error:", event.error);
});
window.addEventListener("unhandledrejection", (event) => {
console.error("[main.tsx] 未处理的Promise拒绝:", event.reason);
console.error("[main.tsx] Unhandled promise rejection:", event.reason);
});

View File

@@ -88,13 +88,13 @@ export const AppDataProvider = ({
const newProfileId = event.payload;
const now = Date.now();
console.log(`[AppDataProvider] Profile切换事件: ${newProfileId}`);
console.log(`[AppDataProvider] Profile switched: ${newProfileId}`);
if (
lastProfileId === newProfileId &&
now - lastUpdateTime < refreshThrottle
) {
console.log("[AppDataProvider] 重复事件被防抖,跳过");
console.log("[AppDataProvider] Duplicate event debounced, skip");
return;
}
@@ -103,7 +103,7 @@ export const AppDataProvider = ({
setTimeout(async () => {
try {
console.log("[AppDataProvider] 强制刷新代理缓存");
console.log("[AppDataProvider] Force refresh proxy cache");
const refreshPromise = Promise.race([
forceRefreshProxies(),
@@ -117,15 +117,15 @@ export const AppDataProvider = ({
await refreshPromise;
console.log("[AppDataProvider] 刷新前端代理数据");
console.log("[AppDataProvider] Refresh frontend proxy data");
await refreshProxy();
console.log("[AppDataProvider] Profile切换的代理数据刷新完成");
console.log("[AppDataProvider] Proxy data refreshed for profile switch");
} catch (error) {
console.error("[AppDataProvider] 强制刷新代理缓存失败:", error);
console.error("[AppDataProvider] Force refresh proxy cache failed:", error);
refreshProxy().catch((e) =>
console.warn("[AppDataProvider] 普通刷新也失败:", e),
console.warn("[AppDataProvider] Normal refresh also failed:", e),
);
}
}, 0);
@@ -134,14 +134,14 @@ export const AppDataProvider = ({
// 监听Clash配置刷新事件(enhance操作等)
const handleRefreshClash = () => {
const now = Date.now();
console.log("[AppDataProvider] Clash配置刷新事件");
console.log("[AppDataProvider] Clash config refresh event");
if (now - lastUpdateTime > refreshThrottle) {
lastUpdateTime = now;
setTimeout(async () => {
try {
console.log("[AppDataProvider] Clash刷新 - 强制刷新代理缓存");
console.log("[AppDataProvider] Clash refresh - force refresh proxy cache");
// 添加超时保护
const refreshPromise = Promise.race([
@@ -158,11 +158,11 @@ export const AppDataProvider = ({
await refreshProxy();
} catch (error) {
console.error(
"[AppDataProvider] Clash刷新时强制刷新代理缓存失败:",
"[AppDataProvider] Clash refresh forcing proxy cache refresh failed:",
error,
);
refreshProxy().catch((e) =>
console.warn("[AppDataProvider] Clash刷新普通刷新也失败:", e),
console.warn("[AppDataProvider] Clash refresh normal refresh also failed:", e),
);
}
}, 0);
@@ -181,7 +181,7 @@ export const AppDataProvider = ({
);
};
} catch (error) {
console.error("[AppDataProvider] 事件监听器设置失败:", error);
console.error("[AppDataProvider] Failed to set up event listeners:", error);
return () => {};
}
};
@@ -279,7 +279,7 @@ export const AppDataProvider = ({
if (!server) return () => {};
console.log(
`[Connections][${AppDataProvider.name}] 正在连接: ${server}/connections`,
`[Connections][${AppDataProvider.name}] Connecting: ${server}/connections`,
);
const socket = createAuthSockette(`${server}/connections`, secret, {
timeout: 5000,
@@ -322,7 +322,7 @@ export const AppDataProvider = ({
);
} catch (err) {
console.error(
`[Connections][${AppDataProvider.name}] 解析数据错误:`,
`[Connections][${AppDataProvider.name}] Failed to parse data:`,
err,
event.data,
);
@@ -330,26 +330,26 @@ export const AppDataProvider = ({
},
onopen: (event) => {
console.log(
`[Connections][${AppDataProvider.name}] WebSocket 连接已建立`,
`[Connections][${AppDataProvider.name}] WebSocket connected`,
event,
);
},
onerror(event) {
console.error(
`[Connections][${AppDataProvider.name}] WebSocket 连接错误或达到最大重试次数`,
`[Connections][${AppDataProvider.name}] WebSocket error or max retries reached`,
event,
);
next(null, { connections: [], uploadTotal: 0, downloadTotal: 0 });
},
onclose: (event) => {
console.log(
`[Connections][${AppDataProvider.name}] WebSocket 连接关闭`,
`[Connections][${AppDataProvider.name}] WebSocket closed`,
event.code,
event.reason,
);
if (event.code !== 1000 && event.code !== 1001) {
console.warn(
`[Connections][${AppDataProvider.name}] 连接非正常关闭,重置数据`,
`[Connections][${AppDataProvider.name}] Abnormal close, resetting data`,
);
next(null, { connections: [], uploadTotal: 0, downloadTotal: 0 });
}
@@ -357,7 +357,7 @@ export const AppDataProvider = ({
});
return () => {
console.log(`[Connections][${AppDataProvider.name}] 清理WebSocket连接`);
console.log(`[Connections][${AppDataProvider.name}] Cleaning up WebSocket connection`);
socket.close();
};
},
@@ -373,7 +373,7 @@ export const AppDataProvider = ({
if (!server) return () => {};
console.log(
`[Traffic][${AppDataProvider.name}] 正在连接: ${server}/traffic`,
`[Traffic][${AppDataProvider.name}] Connecting: ${server}/traffic`,
);
const socket = createAuthSockette(`${server}/traffic`, secret, {
onmessage(event) {
@@ -387,13 +387,13 @@ export const AppDataProvider = ({
next(null, data);
} else {
console.warn(
`[Traffic][${AppDataProvider.name}] 收到无效数据:`,
`[Traffic][${AppDataProvider.name}] Received invalid data:`,
data,
);
}
} catch (err) {
console.error(
`[Traffic][${AppDataProvider.name}] 解析数据错误:`,
`[Traffic][${AppDataProvider.name}] Failed to parse data:`,
err,
event.data,
);
@@ -401,26 +401,26 @@ export const AppDataProvider = ({
},
onopen: (event) => {
console.log(
`[Traffic][${AppDataProvider.name}] WebSocket 连接已建立`,
`[Traffic][${AppDataProvider.name}] WebSocket connected`,
event,
);
},
onerror(event) {
console.error(
`[Traffic][${AppDataProvider.name}] WebSocket 连接错误或达到最大重试次数`,
`[Traffic][${AppDataProvider.name}] WebSocket error or max retries reached`,
event,
);
next(null, { up: 0, down: 0 });
},
onclose: (event) => {
console.log(
`[Traffic][${AppDataProvider.name}] WebSocket 连接关闭`,
`[Traffic][${AppDataProvider.name}] WebSocket closed`,
event.code,
event.reason,
);
if (event.code !== 1000 && event.code !== 1001) {
console.warn(
`[Traffic][${AppDataProvider.name}] 连接非正常关闭,重置数据`,
`[Traffic][${AppDataProvider.name}] Abnormal close, resetting data`,
);
next(null, { up: 0, down: 0 });
}
@@ -428,7 +428,7 @@ export const AppDataProvider = ({
});
return () => {
console.log(`[Traffic][${AppDataProvider.name}] 清理WebSocket连接`);
console.log(`[Traffic][${AppDataProvider.name}] Cleaning up WebSocket connection`);
socket.close();
};
},
@@ -443,7 +443,7 @@ export const AppDataProvider = ({
if (!server) return () => {};
console.log(
`[Memory][${AppDataProvider.name}] 正在连接: ${server}/memory`,
`[Memory][${AppDataProvider.name}] Connecting: ${server}/memory`,
);
const socket = createAuthSockette(`${server}/memory`, secret, {
onmessage(event) {
@@ -453,13 +453,13 @@ export const AppDataProvider = ({
next(null, data);
} else {
console.warn(
`[Memory][${AppDataProvider.name}] 收到无效数据:`,
`[Memory][${AppDataProvider.name}] Received invalid data:`,
data,
);
}
} catch (err) {
console.error(
`[Memory][${AppDataProvider.name}] 解析数据错误:`,
`[Memory][${AppDataProvider.name}] Failed to parse data:`,
err,
event.data,
);
@@ -467,26 +467,26 @@ export const AppDataProvider = ({
},
onopen: (event) => {
console.log(
`[Memory][${AppDataProvider.name}] WebSocket 连接已建立`,
`[Memory][${AppDataProvider.name}] WebSocket connected`,
event,
);
},
onerror(event) {
console.error(
`[Memory][${AppDataProvider.name}] WebSocket 连接错误或达到最大重试次数`,
`[Memory][${AppDataProvider.name}] WebSocket error or max retries reached`,
event,
);
next(null, { inuse: 0 });
},
onclose: (event) => {
console.log(
`[Memory][${AppDataProvider.name}] WebSocket 连接关闭`,
`[Memory][${AppDataProvider.name}] WebSocket closed`,
event.code,
event.reason,
);
if (event.code !== 1000 && event.code !== 1001) {
console.warn(
`[Memory][${AppDataProvider.name}] 连接非正常关闭,重置数据`,
`[Memory][${AppDataProvider.name}] Abnormal close, resetting data`,
);
next(null, { inuse: 0 });
}
@@ -494,7 +494,7 @@ export const AppDataProvider = ({
});
return () => {
console.log(`[Memory][${AppDataProvider.name}] 清理WebSocket连接`);
console.log(`[Memory][${AppDataProvider.name}] Cleaning up WebSocket connection`);
socket.close();
};
},
@@ -521,13 +521,13 @@ export const AppDataProvider = ({
const isPacMode = verge.proxy_auto_config ?? false;
if (isPacMode) {
// PAC模式:显示我们期望设置的代理地址
// PAC mode: show expected proxy address
const proxyHost = verge.proxy_host || "127.0.0.1";
const proxyPort =
verge.verge_mixed_port || clashConfig["mixed-port"] || 7897;
return `${proxyHost}:${proxyPort}`;
} else {
// HTTP代理模式:优先使用系统地址,但如果格式不正确则使用期望地址
// HTTP proxy mode: prefer system address, else fallback to expected address
const systemServer = sysproxy?.server;
if (
systemServer &&
@@ -536,7 +536,7 @@ export const AppDataProvider = ({
) {
return systemServer;
} else {
// 系统地址无效,返回期望的代理地址
// Invalid system address; return expected proxy address
const proxyHost = verge.proxy_host || "127.0.0.1";
const proxyPort =
verge.verge_mixed_port || clashConfig["mixed-port"] || 7897;
@@ -612,7 +612,7 @@ export const useAppData = () => {
const context = useContext(AppDataContext);
if (!context) {
throw new Error("useAppData必须在AppDataProvider内使用");
throw new Error("useAppData must be used within AppDataProvider");
}
return context;

View File

@@ -279,13 +279,13 @@ export const getGroupProxyDelays = async (
};
console.log(
`[API] 获取代理组延迟,组: ${groupName}, URL: ${params.url}, 超时: ${params.timeout}ms`,
`[API] Get proxy group delay, group: ${groupName}, URL: ${params.url}, timeout: ${params.timeout}ms`,
);
try {
const instance = await getAxios();
console.log(
`[API] 发送HTTP请求: GET /group/${encodeURIComponent(groupName)}/delay`,
`[API] Send HTTP request: GET /group/${encodeURIComponent(groupName)}/delay`,
);
const result = await instance.get(
@@ -294,12 +294,12 @@ export const getGroupProxyDelays = async (
);
console.log(
`[API] 获取代理组延迟成功,组: ${groupName}, 结果数量:`,
`[API] Get proxy group delay success, group: ${groupName}, result count:`,
Object.keys(result || {}).length,
);
return result as any as Record<string, number>;
} catch (error) {
console.error(`[API] 获取代理组延迟失败,组: ${groupName}`, error);
console.error(`[API] Get proxy group delay failed, group: ${groupName}`, error);
throw error;
}
};
@@ -476,7 +476,7 @@ export const getIpInfo = async (): Promise<IpInfo> => {
// 配置参数
const maxRetries = 3;
const serviceTimeout = 5000;
const overallTimeout = 20000; // 增加总超时时间以容纳延迟
const overallTimeout = 20000; // increase total timeout to accommodate delays
const overallTimeoutController = new AbortController();
const overallTimeoutId = setTimeout(() => {
@@ -488,7 +488,7 @@ export const getIpInfo = async (): Promise<IpInfo> => {
let lastError: Error | null = null;
for (const service of shuffledServices) {
console.log(`尝试IP检测服务: ${service.url}`);
console.log(`Trying IP detection service: ${service.url}`);
for (let attempt = 0; attempt < maxRetries; attempt++) {
let timeoutId: ReturnType<typeof setTimeout> | null = null;
@@ -508,17 +508,17 @@ export const getIpInfo = async (): Promise<IpInfo> => {
if (timeoutId) clearTimeout(timeoutId);
if (response.data && response.data.ip) {
console.log(`IP检测成功,使用服务: ${service.url}`);
console.log(`IP detection succeeded, using service: ${service.url}`);
return service.mapping(response.data);
} else {
throw new Error(`无效的响应格式 from ${service.url}`);
throw new Error(`Invalid response format from ${service.url}`);
}
} catch (error: any) {
if (timeoutId) clearTimeout(timeoutId);
lastError = error;
console.log(
`尝试 ${attempt + 1}/${maxRetries} 失败 (${service.url}):`,
`Attempt ${attempt + 1}/${maxRetries} failed (${service.url}):`,
error.message,
);
@@ -534,9 +534,9 @@ export const getIpInfo = async (): Promise<IpInfo> => {
}
if (lastError) {
throw new Error(`所有IP检测服务都失败: ${lastError.message}`);
throw new Error(`All IP detection services failed: ${lastError.message}`);
} else {
throw new Error("没有可用的IP检测服务");
throw new Error("No available IP detection services");
}
} finally {
clearTimeout(overallTimeoutId);

View File

@@ -112,15 +112,15 @@ export async function getSystemProxy() {
export async function getAutotemProxy() {
try {
console.log("[API] 开始调用 get_auto_proxy");
console.log("[API] Start calling get_auto_proxy");
const result = await invoke<{
enable: boolean;
url: string;
}>("get_auto_proxy");
console.log("[API] get_auto_proxy 调用成功:", result);
console.log("[API] get_auto_proxy success:", result);
return result;
} catch (error) {
console.error("[API] get_auto_proxy 调用失败:", error);
console.error("[API] get_auto_proxy failed:", error);
return {
enable: false,
url: "",
@@ -132,7 +132,7 @@ export async function getAutoLaunchStatus() {
try {
return await invoke<boolean>("get_auto_launch_status");
} catch (error) {
console.error("获取自启动状态失败:", error);
console.error("Failed to get auto-launch state:", error);
return false;
}
}
@@ -195,7 +195,7 @@ export async function cmdGetProxyDelay(
// 确保URL不为空
const testUrl = url || "https://cp.cloudflare.com/generate_204";
console.log(
`[API] 调用延迟测试API代理: ${name}, 超时: ${timeout}ms, URL: ${testUrl}`,
`[API] Calling delay test API, proxy: ${name}, timeout: ${timeout}ms, URL: ${testUrl}`,
);
try {
@@ -212,19 +212,19 @@ export async function cmdGetProxyDelay(
// 验证返回结果中是否有delay字段并且值是一个有效的数字
if (result && typeof result.delay === "number") {
console.log(
`[API] 延迟测试API调用成功代理: ${name}, 延迟: ${result.delay}ms`,
`[API] Delay test API success, proxy: ${name}, delay: ${result.delay}ms`,
);
return result;
} else {
console.error(
`[API] 延迟测试API返回无效结果代理: ${name}, 结果:`,
`[API] Delay test API returned invalid result, proxy: ${name}, result:`,
result,
);
// 返回一个有效的结果对象,但标记为超时
return { delay: 1e6 };
}
} catch (error) {
console.error(`[API] 延迟测试API调用失败代理: ${name}`, error);
console.error(`[API] Delay test API failed, proxy: ${name}`, error);
// 返回一个有效的结果对象,但标记为错误
return { delay: 1e6 };
}
@@ -232,7 +232,7 @@ export async function cmdGetProxyDelay(
/// 用于profile切换等场景
export async function forceRefreshProxies() {
console.log("[API] 强制刷新代理缓存");
console.log("[API] Force refresh proxy cache");
return invoke<any>("force_refresh_proxies");
}
@@ -392,7 +392,7 @@ export const isAdmin = async () => {
try {
return await invoke<boolean>("is_admin");
} catch (error) {
console.error("检查管理员权限失败:", error);
console.error("Failed to check admin privileges:", error);
return false;
}
};

View File

@@ -83,10 +83,10 @@ export const initGlobalLogService = (
// 创建新的WebSocket连接使用新的认证方法
const wsUrl = buildWSUrl(server, logLevel);
console.log(`[GlobalLog] 正在连接日志服务: ${wsUrl}`);
console.log(`[GlobalLog] Connecting to log service: ${wsUrl}`);
if (!server) {
console.warn("[GlobalLog] 服务器地址为空,无法建立连接");
console.warn("[GlobalLog] Server URL is empty, cannot establish connection");
return;
}
@@ -98,11 +98,11 @@ export const initGlobalLogService = (
const time = dayjs().format("MM-DD HH:mm:ss");
appendLog({ ...data, time });
} catch (error) {
console.error("[GlobalLog] 解析日志数据失败:", error);
console.error("[GlobalLog] Failed to parse log data:", error);
}
},
onerror(event) {
console.error("[GlobalLog] WebSocket连接错误", event);
console.error("[GlobalLog] WebSocket connection error", event);
// 记录错误状态但不关闭连接,让重连机制起作用
useGlobalLogStore.setState({ isConnected: false });
@@ -114,16 +114,16 @@ export const initGlobalLogService = (
"type" in event &&
event.type === "error"
) {
console.error("[GlobalLog] 连接已彻底失败,关闭连接");
console.error("[GlobalLog] Connection exhausted retries, closing");
closeGlobalLogConnection();
}
},
onclose(event) {
console.log("[GlobalLog] WebSocket连接关闭", event);
console.log("[GlobalLog] WebSocket connection closed", event);
useGlobalLogStore.setState({ isConnected: false });
},
onopen(event) {
console.log("[GlobalLog] WebSocket连接已建立", event);
console.log("[GlobalLog] WebSocket connection established", event);
useGlobalLogStore.setState({ isConnected: true });
},
});