Skip to content

Commit 81587a0

Browse files
committed
✨ 日志定时清理逻辑
1 parent aa2ace1 commit 81587a0

File tree

4 files changed

+56
-0
lines changed

4 files changed

+56
-0
lines changed

Diff for: src/app/repo/logger.ts

+4
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,8 @@ export class LoggerDAO extends DAO<Logger> {
2525

2626
return ret.sort((a, b) => b.createtime - a.createtime);
2727
}
28+
29+
deleteBefore(time: number) {
30+
return this.table.where("createtime").below(time).delete();
31+
}
2832
}

Diff for: src/app/service/system/manager.ts

+26
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { ScriptDAO } from "@App/app/repo/scripts";
66
import { SystemConfig } from "@App/pkg/config/config";
77
import { prepareScriptByCode } from "@App/pkg/utils/script";
88
import Logger from "@App/app/logger/logger";
9+
import { LoggerDAO } from "@App/app/repo/logger";
910
import Manager from "../manager";
1011
import ScriptManager from "../script/manager";
1112

@@ -20,11 +21,14 @@ export class SystemManager extends Manager {
2021

2122
wsVscode?: WebSocket;
2223

24+
loggerDAO: LoggerDAO;
25+
2326
constructor(message: MessageHander, systemConfig: SystemConfig) {
2427
super(message, "system");
2528
this.scriptDAO = new ScriptDAO();
2629
this.systemConfig = systemConfig;
2730
this.scriptManager = IoC.instance(ScriptManager) as ScriptManager;
31+
this.loggerDAO = new LoggerDAO();
2832
}
2933

3034
init() {
@@ -96,6 +100,9 @@ export class SystemManager extends Manager {
96100
this.listenEvent("connectVSCode", this.connectVSCode.bind(this));
97101

98102
this.reconnectVSCode();
103+
104+
// 定时清理日志
105+
this.clearLogger();
99106
}
100107

101108
reconnectVSCode() {
@@ -189,6 +196,25 @@ export class SystemManager extends Manager {
189196
});
190197
});
191198
}
199+
200+
clearLogger() {
201+
setInterval(() => {
202+
// 取出上一次清理时间
203+
chrome.storage.local.get(["lastClearLoggerTime"], (items) => {
204+
const lastClearLoggerTime = items.lastClearLoggerTime || 0;
205+
const now = new Date().getTime();
206+
if (now - lastClearLoggerTime > 60 * 60 * 1000) {
207+
chrome.storage.local.set({ lastClearLoggerTime: now });
208+
// 清理7天前的日志
209+
this.loggerDAO.deleteBefore(
210+
new Date(
211+
now - this.systemConfig.logCleanCycle * 24 * 60 * 60 * 1000
212+
).getTime()
213+
);
214+
}
215+
});
216+
}, 60 * 1000);
217+
}
192218
}
193219

194220
export default SystemManager;

Diff for: src/pages/options/routes/Logger.tsx

+17
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import LogLabel, { Labels, Query } from "@App/pages/components/LogLabel";
1616
import { IconPlus } from "@arco-design/web-react/icon";
1717
import { useSearchParams } from "react-router-dom";
1818
import { formatUnixTime } from "@App/pkg/utils/utils";
19+
import { SystemConfig } from "@App/pkg/config/config";
20+
import IoC from "@App/app/ioc";
1921

2022
function Subscribe() {
2123
const [labels, setLabels] = React.useState<Labels>({});
@@ -30,6 +32,7 @@ function Subscribe() {
3032
);
3133
const [endTime, setEndTime] = React.useState(dayjs().unix());
3234
const loggerDAO = new LoggerDAO();
35+
const systemConfig = IoC.instance(SystemConfig) as SystemConfig;
3336

3437
const onQueryLog = () => {
3538
const newQueryLogs: Logger[] = [];
@@ -262,6 +265,20 @@ function Subscribe() {
262265
title="日志"
263266
extra={
264267
<Space>
268+
<Space>
269+
<span>定时清理</span>
270+
<Input
271+
defaultValue={systemConfig.logCleanCycle.toString()}
272+
style={{
273+
width: "60px",
274+
}}
275+
type="number"
276+
onChange={(e) => {
277+
systemConfig.logCleanCycle = parseInt(e, 10);
278+
}}
279+
/>
280+
<span>天前的日志</span>
281+
</Space>
265282
<Button
266283
type="primary"
267284
status="warning"

Diff for: src/pkg/config/config.ts

+9
Original file line numberDiff line numberDiff line change
@@ -211,4 +211,13 @@ export class SystemConfig {
211211
Message.error(err.toString());
212212
}
213213
}
214+
215+
// 日志清理周期
216+
get logCleanCycle() {
217+
return <number>this.cache.get("log_clean_cycle") || 7;
218+
}
219+
220+
set logCleanCycle(val: number) {
221+
this.set("log_clean_cycle", val);
222+
}
214223
}

0 commit comments

Comments
 (0)