diff --git a/src/components/layout/use-log-setup.ts b/src/components/layout/use-log-setup.ts
index 75885a47356f1238e48df36a5732f2b6ba4ba438..efd372fcd8f1c398adca90998c7505dea115fdb1 100644
--- a/src/components/layout/use-log-setup.ts
+++ b/src/components/layout/use-log-setup.ts
@@ -1,11 +1,10 @@
 import dayjs from "dayjs";
 import { useEffect, useState } from "react";
-import { useSetRecoilState } from "recoil";
+import { useRecoilValue, useSetRecoilState } from "recoil";
 import { listen } from "@tauri-apps/api/event";
 import { getInformation } from "@/services/api";
 import { getClashLogs } from "@/services/cmds";
-import { atomLogData } from "@/services/states";
-import useLogToggle from "./use-log-toggle";
+import { atomEnableLog, atomLogData } from "@/services/states";
 
 const MAX_LOG_NUM = 1000;
 
@@ -13,7 +12,7 @@ const MAX_LOG_NUM = 1000;
 export default function useLogSetup() {
   const [refresh, setRefresh] = useState({});
 
-  const [enableLog] = useLogToggle();
+  const enableLog = useRecoilValue(atomEnableLog);
   const setLogData = useSetRecoilState(atomLogData);
 
   useEffect(() => {
@@ -21,8 +20,6 @@ export default function useLogSetup() {
 
     getClashLogs().then(setLogData);
 
-    let ws: WebSocket = null!;
-
     const handler = (event: MessageEvent<any>) => {
       const data = JSON.parse(event.data) as ApiType.LogItem;
       const time = dayjs().format("MM-DD HH:mm:ss");
@@ -32,10 +29,11 @@ export default function useLogSetup() {
       });
     };
 
-    getInformation().then((info) => {
+    const ws = getInformation().then((info) => {
       const { server = "", secret = "" } = info;
-      ws = new WebSocket(`ws://${server}/logs?token=${secret}`);
+      const ws = new WebSocket(`ws://${server}/logs?token=${secret}`);
       ws.addEventListener("message", handler);
+      return ws;
     });
 
     const unlisten = listen("verge://refresh-clash-config", () =>
@@ -43,8 +41,8 @@ export default function useLogSetup() {
     );
 
     return () => {
-      ws?.close();
-      unlisten?.then((fn) => fn());
+      ws.then((ws) => ws?.close());
+      unlisten.then((fn) => fn());
     };
   }, [refresh, enableLog]);
 }
diff --git a/src/components/layout/use-log-toggle.ts b/src/components/layout/use-log-toggle.ts
deleted file mode 100644
index 36e1f80a3e28fa098d1a2596eb598af52ae76f6d..0000000000000000000000000000000000000000
--- a/src/components/layout/use-log-toggle.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { useEffect } from "react";
-import { useRecoilState } from "recoil";
-import { atomEnableLog } from "@/services/states";
-
-const LOG_KEY = "enable-log";
-
-export default function useLogToggle() {
-  const [enableLog, setEnableLog] = useRecoilState(atomEnableLog);
-
-  useEffect(() => {
-    try {
-      setEnableLog(localStorage.getItem(LOG_KEY) !== "false");
-    } catch {}
-  }, []);
-
-  const setter = (enable: boolean) => {
-    try {
-      localStorage.setItem(LOG_KEY, enable.toString());
-    } catch {}
-    setEnableLog(enable);
-  };
-
-  return [enableLog, setter];
-}
diff --git a/src/pages/_routers.tsx b/src/pages/_routers.tsx
index bb3d7c9bb4f4eb91c7d23e2e48988b3e570bc390..f53ed487a4c93ad7523c344b6ce49e22e014aa9f 100644
--- a/src/pages/_routers.tsx
+++ b/src/pages/_routers.tsx
@@ -16,16 +16,16 @@ export const routers = [
     link: "/profile",
     ele: ProfilesPage,
   },
-  {
-    label: "Label-Rules",
-    link: "/rules",
-    ele: RulesPage,
-  },
   {
     label: "Label-Connections",
     link: "/connections",
     ele: ConnectionsPage,
   },
+  {
+    label: "Label-Rules",
+    link: "/rules",
+    ele: RulesPage,
+  },
   {
     label: "Label-Logs",
     link: "/logs",
diff --git a/src/services/states.ts b/src/services/states.ts
index 3f322e388d4ecc65e9e7759a409486b6b55e2d0b..664fc3b9f6f922c86b2bddc1739b61a6dbadb5ac 100644
--- a/src/services/states.ts
+++ b/src/services/states.ts
@@ -17,7 +17,21 @@ export const atomLogData = atom<ApiType.LogItem[]>({
 
 export const atomEnableLog = atom<boolean>({
   key: "atomEnableLog",
-  default: true,
+  effects: [
+    ({ setSelf, onSet }) => {
+      const key = "enable-log";
+
+      setSelf(localStorage.getItem(key) !== "false");
+
+      onSet((newValue, _, isReset) => {
+        if (isReset) {
+          localStorage.removeItem(key);
+        } else {
+          localStorage.setItem(key, newValue.toString());
+        }
+      });
+    },
+  ],
 });
 
 // save the state of each profile item loading