Преглед на файлове

修复async语句采用线程池时日志显示不正确的问题

mxd преди 4 години
родител
ревизия
0c7d619f41
променени са 1 файла, в които са добавени 10 реда и са изтрити 3 реда
  1. 10 3
      src/main/java/org/ssssssss/magicapi/logging/MagicLoggerContext.java

+ 10 - 3
src/main/java/org/ssssssss/magicapi/logging/MagicLoggerContext.java

@@ -1,7 +1,8 @@
 package org.ssssssss.magicapi.logging;
 
-import org.slf4j.MDC;
 import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
+import org.ssssssss.script.MagicScriptContext;
+import org.ssssssss.script.MagicScriptDebugContext;
 
 import java.io.IOException;
 import java.util.Map;
@@ -46,8 +47,14 @@ public interface MagicLoggerContext {
 	 * @param logInfo 日志信息
 	 */
 	default void println(LogInfo logInfo){
-		// 从MDC中获取SessionId
-		String sessionId = SESSION.get();
+		// 获取SessionId
+		MagicScriptContext context = MagicScriptContext.get();
+		String sessionId;
+		if(context instanceof MagicScriptDebugContext){
+			sessionId = ((MagicScriptDebugContext) context).getId();
+		}else{
+			sessionId = SESSION.get();
+		}
 		if(sessionId != null){
 			SseEmitter sseEmitter = emitterMap.get(sessionId);
 			if(sseEmitter != null){