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