mirror of
https://github.com/qaiu/netdisk-fast-download.git
synced 2026-06-10 15:37:28 +00:00
fix(parser): JsPlaygroundLogger 日志列表限制最大 1000 条防止内存泄漏
日志列表 Collections.synchronizedList 无容量限制,长时间运行会无界增长。 新增 addLog() 方法,在添加前检查容量,超过 1000 条时移除最早的条目。
This commit is contained in:
@@ -14,6 +14,7 @@ import java.util.List;
|
|||||||
public class JsPlaygroundLogger {
|
public class JsPlaygroundLogger {
|
||||||
|
|
||||||
// 使用线程安全的列表
|
// 使用线程安全的列表
|
||||||
|
private static final int MAX_LOG_SIZE = 1000;
|
||||||
private final List<LogEntry> logs = Collections.synchronizedList(new ArrayList<>());
|
private final List<LogEntry> logs = Collections.synchronizedList(new ArrayList<>());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -59,6 +60,18 @@ public class JsPlaygroundLogger {
|
|||||||
return obj.toString();
|
return obj.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加日志条目,超过最大容量时移除最早的条目
|
||||||
|
*/
|
||||||
|
private void addLog(LogEntry entry) {
|
||||||
|
synchronized (logs) {
|
||||||
|
if (logs.size() >= MAX_LOG_SIZE) {
|
||||||
|
logs.remove(0);
|
||||||
|
}
|
||||||
|
logs.add(entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 记录日志(内部方法)
|
* 记录日志(内部方法)
|
||||||
* @param level 日志级别
|
* @param level 日志级别
|
||||||
@@ -67,7 +80,7 @@ public class JsPlaygroundLogger {
|
|||||||
*/
|
*/
|
||||||
private void log(String level, Object message, String source) {
|
private void log(String level, Object message, String source) {
|
||||||
String msg = toString(message);
|
String msg = toString(message);
|
||||||
logs.add(new LogEntry(level, msg, source));
|
addLog(new LogEntry(level, msg, source));
|
||||||
System.out.println("[" + source + "PlaygroundLogger] " + level + ": " + msg);
|
System.out.println("[" + source + "PlaygroundLogger] " + level + ": " + msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,7 +124,7 @@ public class JsPlaygroundLogger {
|
|||||||
if (throwable != null) {
|
if (throwable != null) {
|
||||||
msg = msg + ": " + throwable.getMessage();
|
msg = msg + ": " + throwable.getMessage();
|
||||||
}
|
}
|
||||||
logs.add(new LogEntry("ERROR", msg, "JS"));
|
addLog(new LogEntry("ERROR", msg, "JS"));
|
||||||
System.out.println("[JSPlaygroundLogger] ERROR: " + msg);
|
System.out.println("[JSPlaygroundLogger] ERROR: " + msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,7 +166,7 @@ public class JsPlaygroundLogger {
|
|||||||
if (throwable != null) {
|
if (throwable != null) {
|
||||||
msg = msg + ": " + throwable.getMessage();
|
msg = msg + ": " + throwable.getMessage();
|
||||||
}
|
}
|
||||||
logs.add(new LogEntry("ERROR", msg, "JAVA"));
|
addLog(new LogEntry("ERROR", msg, "JAVA"));
|
||||||
System.out.println("[JAVAPlaygroundLogger] ERROR: " + msg);
|
System.out.println("[JAVAPlaygroundLogger] ERROR: " + msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user