diff --git a/parser/src/main/java/cn/qaiu/parser/customjs/JsHttpClient.java b/parser/src/main/java/cn/qaiu/parser/customjs/JsHttpClient.java index 0442903..2ada6b0 100644 --- a/parser/src/main/java/cn/qaiu/parser/customjs/JsHttpClient.java +++ b/parser/src/main/java/cn/qaiu/parser/customjs/JsHttpClient.java @@ -534,8 +534,8 @@ public class JsHttpClient { } else { promise.fail(result.cause()); } - }).onFailure(Throwable::printStackTrace); - + }).onFailure(e -> log.error("HTTP请求失败", e)); + // 等待响应完成(使用配置的超时时间) HttpResponse response = promise.future().toCompletionStage() .toCompletableFuture() diff --git a/parser/src/main/java/cn/qaiu/parser/customjs/JsPlaygroundExecutor.java b/parser/src/main/java/cn/qaiu/parser/customjs/JsPlaygroundExecutor.java index e1a31cc..19ae052 100644 --- a/parser/src/main/java/cn/qaiu/parser/customjs/JsPlaygroundExecutor.java +++ b/parser/src/main/java/cn/qaiu/parser/customjs/JsPlaygroundExecutor.java @@ -355,7 +355,7 @@ public class JsPlaygroundExecutor { */ public List getLogs() { List logs = playgroundLogger.getLogs(); - System.out.println("[JsPlaygroundExecutor] 获取日志,数量: " + logs.size()); + log.debug("获取日志,数量: {}", logs.size()); return logs; } 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 8319d96..f442e64 100644 --- a/parser/src/main/java/cn/qaiu/parser/customjs/JsPlaygroundLogger.java +++ b/parser/src/main/java/cn/qaiu/parser/customjs/JsPlaygroundLogger.java @@ -4,6 +4,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * 演练场日志收集器 * 收集JavaScript执行过程中的日志信息 @@ -12,7 +15,9 @@ import java.util.List; * @author QAIU */ public class JsPlaygroundLogger { - + + private static final Logger log = LoggerFactory.getLogger(JsPlaygroundLogger.class); + // 使用线程安全的列表 private static final int MAX_LOG_SIZE = 1000; private final List logs = Collections.synchronizedList(new ArrayList<>()); @@ -81,7 +86,7 @@ public class JsPlaygroundLogger { private void log(String level, Object message, String source) { String msg = toString(message); addLog(new LogEntry(level, msg, source)); - System.out.println("[" + source + "PlaygroundLogger] " + level + ": " + msg); + log.debug("[{}PlaygroundLogger] {}: {}", source, level, msg); } /** @@ -125,7 +130,7 @@ public class JsPlaygroundLogger { msg = msg + ": " + throwable.getMessage(); } addLog(new LogEntry("ERROR", msg, "JS")); - System.out.println("[JSPlaygroundLogger] ERROR: " + msg); + log.debug("[JSPlaygroundLogger] ERROR: {}", msg); } // ===== 以下是供Java层调用的内部方法 ===== @@ -167,7 +172,7 @@ public class JsPlaygroundLogger { msg = msg + ": " + throwable.getMessage(); } addLog(new LogEntry("ERROR", msg, "JAVA")); - System.out.println("[JAVAPlaygroundLogger] ERROR: " + msg); + log.debug("[JAVAPlaygroundLogger] ERROR: {}", msg); } /** diff --git a/web-service/src/main/java/cn/qaiu/lz/common/interceptorImpl/LogStatistics.java b/web-service/src/main/java/cn/qaiu/lz/common/interceptorImpl/LogStatistics.java index 18dc3be..628bc5e 100644 --- a/web-service/src/main/java/cn/qaiu/lz/common/interceptorImpl/LogStatistics.java +++ b/web-service/src/main/java/cn/qaiu/lz/common/interceptorImpl/LogStatistics.java @@ -48,6 +48,6 @@ public class LogStatistics implements AfterInterceptor { .execute(info) .onSuccess(res -> { log.info("inserted log: id={}, path={}, code={}", info.getId(), info.getPath(), info.getCode()); - }).onFailure(Throwable::printStackTrace); + }).onFailure(e -> log.error("插入解析日志失败: id={}", info.getId(), e)); } } diff --git a/web-service/src/main/java/cn/qaiu/lz/web/controller/PlaygroundApi.java b/web-service/src/main/java/cn/qaiu/lz/web/controller/PlaygroundApi.java index dc96e1b..fb54307 100644 --- a/web-service/src/main/java/cn/qaiu/lz/web/controller/PlaygroundApi.java +++ b/web-service/src/main/java/cn/qaiu/lz/web/controller/PlaygroundApi.java @@ -704,6 +704,7 @@ public class PlaygroundApi { if (throwable == null) { return ""; } + log.error("获取异常堆栈信息", throwable); java.io.StringWriter sw = new java.io.StringWriter(); java.io.PrintWriter pw = new java.io.PrintWriter(sw); throwable.printStackTrace(pw); diff --git a/web-service/src/main/java/cn/qaiu/lz/web/service/impl/CacheServiceImpl.java b/web-service/src/main/java/cn/qaiu/lz/web/service/impl/CacheServiceImpl.java index 977432c..8dbd0c1 100644 --- a/web-service/src/main/java/cn/qaiu/lz/web/service/impl/CacheServiceImpl.java +++ b/web-service/src/main/java/cn/qaiu/lz/web/service/impl/CacheServiceImpl.java @@ -104,7 +104,7 @@ public class CacheServiceImpl implements CacheService { promise.complete(result); // 更新缓存 cacheManager.cacheShareLink(cacheLinkInfo); - cacheManager.updateTotalByField(cacheKey, CacheTotalField.API_PARSER_TOTAL).onFailure(Throwable::printStackTrace); + cacheManager.updateTotalByField(cacheKey, CacheTotalField.API_PARSER_TOTAL).onFailure(e -> log.error("更新API解析计数失败: cacheKey={}", cacheKey, e)); }).onFailure(promise::fail); } else { // 缓存命中,生成过期时间并生成下载命令 @@ -120,7 +120,7 @@ public class CacheServiceImpl implements CacheService { promise.complete(result); cacheManager.updateTotalByField(cacheKey, CacheTotalField.CACHE_HIT_TOTAL) - .onFailure(Throwable::printStackTrace); + .onFailure(e -> log.error("更新缓存命中计数失败: cacheKey={}", cacheKey, e)); } }).onFailure(t -> promise.fail(t.fillInStackTrace()));