From ae3ff9ecbb5ca47a5a3964d5bf53b2a23a4dfbbf Mon Sep 17 00:00:00 2001 From: yukaidi Date: Fri, 29 May 2026 02:09:59 +0800 Subject: [PATCH] =?UTF-8?q?fix(parser):=20JsPlaygroundLogger=20=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E5=88=97=E8=A1=A8=E9=99=90=E5=88=B6=E6=9C=80=E5=A4=A7?= =?UTF-8?q?=201000=20=E6=9D=A1=E9=98=B2=E6=AD=A2=E5=86=85=E5=AD=98?= =?UTF-8?q?=E6=B3=84=E6=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 日志列表 Collections.synchronizedList 无容量限制,长时间运行会无界增长。 新增 addLog() 方法,在添加前检查容量,超过 1000 条时移除最早的条目。 --- .../parser/customjs/JsPlaygroundLogger.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/parser/src/main/java/cn/qaiu/parser/customjs/JsPlaygroundLogger.java b/parser/src/main/java/cn/qaiu/parser/customjs/JsPlaygroundLogger.java index a6b2acd..8319d96 100644 --- a/parser/src/main/java/cn/qaiu/parser/customjs/JsPlaygroundLogger.java +++ b/parser/src/main/java/cn/qaiu/parser/customjs/JsPlaygroundLogger.java @@ -14,6 +14,7 @@ import java.util.List; public class JsPlaygroundLogger { // 使用线程安全的列表 + private static final int MAX_LOG_SIZE = 1000; private final List logs = Collections.synchronizedList(new ArrayList<>()); /** @@ -59,6 +60,18 @@ public class JsPlaygroundLogger { return obj.toString(); } + /** + * 添加日志条目,超过最大容量时移除最早的条目 + */ + private void addLog(LogEntry entry) { + synchronized (logs) { + if (logs.size() >= MAX_LOG_SIZE) { + logs.remove(0); + } + logs.add(entry); + } + } + /** * 记录日志(内部方法) * @param level 日志级别 @@ -67,7 +80,7 @@ public class JsPlaygroundLogger { */ private void log(String level, Object message, String source) { String msg = toString(message); - logs.add(new LogEntry(level, msg, source)); + addLog(new LogEntry(level, msg, source)); System.out.println("[" + source + "PlaygroundLogger] " + level + ": " + msg); } @@ -111,7 +124,7 @@ public class JsPlaygroundLogger { if (throwable != null) { msg = msg + ": " + throwable.getMessage(); } - logs.add(new LogEntry("ERROR", msg, "JS")); + addLog(new LogEntry("ERROR", msg, "JS")); System.out.println("[JSPlaygroundLogger] ERROR: " + msg); } @@ -153,7 +166,7 @@ public class JsPlaygroundLogger { if (throwable != null) { msg = msg + ": " + throwable.getMessage(); } - logs.add(new LogEntry("ERROR", msg, "JAVA")); + addLog(new LogEntry("ERROR", msg, "JAVA")); System.out.println("[JAVAPlaygroundLogger] ERROR: " + msg); }