From a097b46f65c90ca9d4e7ea6992f054c0d2522129 Mon Sep 17 00:00:00 2001 From: fit2-zhao Date: Fri, 24 Mar 2023 12:52:04 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E9=A1=B9=E7=9B=AE=E8=AE=BE=E7=BD=AE):?= =?UTF-8?q?=20=E4=BB=A3=E7=A0=81=E7=89=87=E6=AE=B5=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E9=9A=94=E7=A6=BB=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1024856 --user=赵勇 【测试跟踪】自定义代码片段控制台日志未隔离 https://www.tapd.cn/55049933/s/1355517 Signed-off-by: fit2-zhao --- .../code/snippet/JMeterLoggerAppender.java | 14 ++-- .../snippet/listener/MsDebugListener.java | 2 +- .../service/CustomFunctionService.java | 9 ++- .../code/snippet/util/FixedCapacityUtils.java | 76 +++++++++++++------ .../backend/src/main/resources/logback.xml | 2 +- 5 files changed, 65 insertions(+), 38 deletions(-) diff --git a/project-management/backend/src/main/java/io/metersphere/code/snippet/JMeterLoggerAppender.java b/project-management/backend/src/main/java/io/metersphere/code/snippet/JMeterLoggerAppender.java index 35a7483b01..3a66d90295 100644 --- a/project-management/backend/src/main/java/io/metersphere/code/snippet/JMeterLoggerAppender.java +++ b/project-management/backend/src/main/java/io/metersphere/code/snippet/JMeterLoggerAppender.java @@ -10,11 +10,14 @@ import org.apache.commons.lang3.StringUtils; public class JMeterLoggerAppender extends UnsynchronizedAppenderBase { + private final static String THREAD_SPLIT = " "; + @Override public void append(ILoggingEvent event) { try { - if (!event.getLevel().levelStr.equals(LogUtil.DEBUG)) { + if (!event.getLevel().levelStr.equals(LogUtil.DEBUG) && StringUtils.isNotEmpty(event.getThreadName())) { StringBuffer message = new StringBuffer(); + String threadName = StringUtils.substringBeforeLast(event.getThreadName(), THREAD_SPLIT); message.append(DateUtils.getTimeStr(event.getTimeStamp())).append(StringUtils.SPACE) .append(event.getLevel()).append(StringUtils.SPACE) .append(event.getThreadName()).append(StringUtils.SPACE) @@ -29,12 +32,9 @@ public class JMeterLoggerAppender extends UnsynchronizedAppenderBase fixedCapacityCache = Collections.synchronizedMap(new LRUHashMap<>()); - public final static Map jmeterLogTask = new HashMap<>(); + private static Map fixedCapacityCache = Collections.synchronizedMap(new LRUHashMap<>()); - public static StringBuffer get(Long key) { + public static StringBuffer get(String key) { return fixedCapacityCache.get(key); } - public static void put(Long key, StringBuffer value) { - fixedCapacityCache.put(key, value); + public static boolean containsKey(String key) { + if (StringUtils.isEmpty(key)) { + return false; + } + return fixedCapacityCache.containsKey(key); + } + + public static void put(String key, StringBuffer value) { + if (!fixedCapacityCache.containsKey(key)) { + fixedCapacityCache.put(key, value); + } + } + + public static void remove(String key) { + if (fixedCapacityCache.containsKey(key)) { + fixedCapacityCache.remove(key); + } } public static int size() { @@ -24,7 +42,7 @@ public class FixedCapacityUtils { static class LRUHashMap extends LinkedHashMap { - private int capacity = 100; + private int capacity = 3000; @Override protected boolean removeEldestEntry(Map.Entry eldest) { @@ -32,28 +50,36 @@ public class FixedCapacityUtils { } } - - public static String getJmeterLogger(String reportId, boolean isClear) { + public static String getJmeterLogger(String reportId) { try { - Long startTime = FixedCapacityUtils.jmeterLogTask.get(reportId); - if (startTime == null) { - startTime = FixedCapacityUtils.jmeterLogTask.get("[" + reportId + "]"); + StringBuffer console = fixedCapacityCache.get(reportId); + if (FileUtils.isFolderExists(reportId)) { + console.append(StringUtils.LF) + .append(DateUtils.getTimeString(new Date())) + .append(" INFO ").append("Tmp folder ") + .append(FileUtils.BODY_FILE_DIR) + .append(File.separator) + .append(reportId) + .append(" has deleted."); } - if (startTime == null) { - startTime = System.currentTimeMillis(); + if (FileUtils.isFolderExists("tmp" + File.separator + reportId)) { + console.append(StringUtils.LF) + .append(DateUtils.getTimeString(new Date())) + .append(" INFO ") + .append("Tmp folder ") + .append(FileUtils.BODY_FILE_DIR) + .append(File.separator) + .append("tmp") + .append(File.separator) + .append(reportId) + .append(" has deleted."); } - Long endTime = System.currentTimeMillis(); - Long finalStartTime = startTime; - String logMessage = FixedCapacityUtils.fixedCapacityCache.entrySet().stream() - .filter(map -> map.getKey() > finalStartTime && map.getKey() <= endTime) - .map(map -> map.getValue()).collect(Collectors.joining()); - - return logMessage; + return console.toString(); } catch (Exception e) { - return ""; + return StringUtils.EMPTY; } finally { - if (isClear && FixedCapacityUtils.jmeterLogTask.containsKey(reportId)) { - FixedCapacityUtils.jmeterLogTask.remove(reportId); + if (fixedCapacityCache.containsKey(reportId)) { + fixedCapacityCache.remove(reportId); } } } diff --git a/project-management/backend/src/main/resources/logback.xml b/project-management/backend/src/main/resources/logback.xml index a5c7eaac47..f8ee418693 100644 --- a/project-management/backend/src/main/resources/logback.xml +++ b/project-management/backend/src/main/resources/logback.xml @@ -263,7 +263,7 @@ UTF-8 - %d [%thread] %-5level %logger{36} %line - %msg%n + %d %t %-5level %logger{36} %line - %msg%n