Bläddra i källkod

优化`log`模块日志显示,将类名改为接口+路径

mxd 3 år sedan
förälder
incheckning
09deb5ff57

+ 2 - 2
magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIAutoConfiguration.java

@@ -59,9 +59,9 @@ import org.ssssssss.magicapi.utils.ClassScanner;
 import org.ssssssss.magicapi.utils.Mapping;
 import org.ssssssss.magicapi.utils.PathUtils;
 import org.ssssssss.script.MagicResourceLoader;
-import org.ssssssss.script.MagicScript;
 import org.ssssssss.script.MagicScriptEngine;
 import org.ssssssss.script.exception.MagicScriptRuntimeException;
+import org.ssssssss.script.functions.DynamicModuleImport;
 import org.ssssssss.script.functions.ExtensionMethod;
 import org.ssssssss.script.parsing.ast.statement.AsyncCall;
 import org.ssssssss.script.reflection.JavaReflection;
@@ -459,7 +459,7 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer, WebSocketCon
 				}).orElse(null)
 		);
 		logger.info("注册模块:{} -> {}", "log", Logger.class);
-		MagicResourceLoader.addModule("log", LoggerFactory.getLogger(MagicScript.class));
+		MagicResourceLoader.addModule("log", (DynamicModuleImport) context -> LoggerFactory.getLogger(context.getScriptName()));
 		List<String> importModules = properties.getAutoImportModuleList();
 		logger.info("注册模块:{} -> {}", "env", EnvModule.class);
 		MagicResourceLoader.addModule("env", new EnvModule(environment));

+ 2 - 0
magic-api/src/main/java/org/ssssssss/magicapi/config/MagicFunctionManager.java

@@ -39,12 +39,14 @@ public class MagicFunctionManager {
 	public void registerFunctionLoader() {
 		MagicResourceLoader.addFunctionLoader((path) -> {
 			FunctionInfo info = mappings.get(path);
+			String scriptName = groupServiceProvider.getScriptName(info.getId(), info.getName(), info.getPath());
 			if (info != null) {
 				List<Parameter> parameters = info.getParameters();
 				return (Function<Object[], Object>) objects -> {
 					MagicScriptContext context = MagicScriptContext.get();
 					try {
 						MagicScriptContext functionContext = new MagicScriptContext(context.getRootVariables());
+						functionContext.setScriptName(scriptName);
 						MagicScriptContext.set(functionContext);
 						if (objects != null) {
 							for (int i = 0, len = objects.length, size = parameters.size(); i < len && i < size; i++) {

+ 2 - 0
magic-api/src/main/java/org/ssssssss/magicapi/controller/RequestHandler.java

@@ -353,6 +353,8 @@ public class RequestHandler extends MagicController {
 		if (wrap != null && StringUtils.isNotBlank(wrap.toString())) {
 			context.set(wrap.toString(), requestEntity.getParameters());
 		}
+		ApiInfo info = requestEntity.getApiInfo();
+		context.setScriptName(configuration.getGroupServiceProvider().getScriptName(info.getGroupId(), info.getName(), info.getPath()));
 		context.putMapIntoContext(requestEntity.getParameters());
 		context.putMapIntoContext(requestEntity.getPathVariables());
 		context.set(VAR_NAME_COOKIE, new CookieContext(requestEntity.getRequest()));

+ 5 - 1
magic-api/src/main/java/org/ssssssss/magicapi/provider/GroupServiceProvider.java

@@ -3,9 +3,9 @@ package org.ssssssss.magicapi.provider;
 import org.ssssssss.magicapi.adapter.Resource;
 import org.ssssssss.magicapi.model.Group;
 import org.ssssssss.magicapi.model.TreeNode;
+import org.ssssssss.magicapi.utils.PathUtils;
 
 import java.util.List;
-import java.util.Set;
 
 
 public interface GroupServiceProvider {
@@ -67,4 +67,8 @@ public interface GroupServiceProvider {
 	Resource getGroupResource(String groupId);
 
 	List<String> getGroupsWithoutGroups(List<String> groupIds);
+
+	default String getScriptName(String groupId, String name, String path) {
+		return PathUtils.replaceSlash("/" + getFullName(groupId) + "/" + name) + "(" + PathUtils.replaceSlash(getFullPath(groupId) + "/" + path) + ")";
+	}
 }

+ 3 - 0
magic-api/src/main/java/org/ssssssss/magicapi/provider/impl/DefaultMagicAPIService.java

@@ -121,6 +121,7 @@ public class DefaultMagicAPIService implements MagicAPIService, JsonCodeConstant
 						MagicScriptContext newContext = new MagicScriptContext();
 						Map<String, Object> varMap = new LinkedHashMap<>(context.getRootVariables());
 						varMap.putAll(variables.getVariables());
+						newContext.setScriptName(groupServiceProvider.getScriptName(info.getId(), info.getName(), info.getPath()));
 						newContext.putMapIntoContext(varMap);
 						MagicScriptContext.set(newContext);
 						try {
@@ -145,6 +146,7 @@ public class DefaultMagicAPIService implements MagicAPIService, JsonCodeConstant
 		final MagicScriptContext magicScriptContext = MagicScriptContext.get();
 
 		MagicScriptContext scriptContext = new MagicScriptContext();
+		scriptContext.setScriptName(groupServiceProvider.getScriptName(info.getGroupId(), info.getName(), info.getPath()));
 		scriptContext.putMapIntoContext(context);
 		SimpleScriptContext simpleScriptContext = new SimpleScriptContext();
 		simpleScriptContext.setAttribute(MagicScript.CONTEXT_ROOT, scriptContext, ScriptContext.ENGINE_SCOPE);
@@ -189,6 +191,7 @@ public class DefaultMagicAPIService implements MagicAPIService, JsonCodeConstant
 			throw new MagicServiceException(String.format("找不到对应函数 [%s]", path));
 		}
 		MagicScriptContext scriptContext = new MagicScriptContext(context);
+		scriptContext.setScriptName(groupServiceProvider.getScriptName(functionInfo.getGroupId(), functionInfo.getName(), functionInfo.getPath()));
 		scriptContext.putMapIntoContext(context);
 		SimpleScriptContext simpleScriptContext = new SimpleScriptContext();
 		simpleScriptContext.setAttribute(MagicScript.CONTEXT_ROOT, scriptContext, ScriptContext.ENGINE_SCOPE);