From cf151119aaa81b32988b8955c393d576853cf2bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E9=A1=BA=E5=87=AF?= Date: Sun, 12 Jun 2022 16:00:14 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=8D=A0=E4=BD=8D?= =?UTF-8?q?=E7=AC=A6=E5=BF=BD=E7=95=A5null=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yomahub/liteflow/flow/element/Node.java | 5 +- .../com/yomahub/liteflow/util/LogUtil.java | 71 +++++++++++++++++++ 2 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Node.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Node.java index 6fbfebcbd..e0d3069fb 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Node.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Node.java @@ -25,6 +25,7 @@ import com.yomahub.liteflow.enums.ExecuteTypeEnum; import com.yomahub.liteflow.enums.NodeTypeEnum; import com.yomahub.liteflow.exception.ChainEndException; import com.yomahub.liteflow.exception.FlowSystemException; +import com.yomahub.liteflow.util.LogUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -126,7 +127,7 @@ public class Node implements Executable,Cloneable{ if (instance.isAccess()) { //根据配置判断是否打印执行中的日志 if (BooleanUtil.isTrue(liteflowConfig.getPrintExecutionLog())){ - LOG.info("[{}]:[O]start component[{}] [{}] execution",slot.getRequestId(),instance.getClass().getSimpleName(),instance.getName()); + LogUtil.info(LOG,"[{}]:[O]start component[{}][{}] execution",slot.getRequestId(),instance.getClass().getSimpleName(),instance.getName()); } //这里开始进行重试的逻辑和主逻辑的运行 @@ -140,7 +141,7 @@ public class Node implements Executable,Cloneable{ } } else { if (BooleanUtil.isTrue(liteflowConfig.getPrintExecutionLog())){ - LOG.info("[{}]:[X]skip component[{}] execution", slot.getRequestId(), instance.getClass().getSimpleName()); + LogUtil.info(LOG,"[{}]:[X]skip component[{}][{}] execution", slot.getRequestId(), instance.getClass().getSimpleName(),instance.getName()); } } } catch (ChainEndException e){ diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java b/liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java new file mode 100644 index 000000000..cf23fa264 --- /dev/null +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java @@ -0,0 +1,71 @@ +package com.yomahub.liteflow.util; + +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Arrays; +import java.util.Objects; + +/** + * @author 惊云 + * @date 2022/6/12 11:05 + */ +public class LogUtil { + + /** + * 日志输出,过滤掉null值的占位符 + * @param logger + * @param message + * @param arguments + */ + public static void info(Logger logger,String message,Object... arguments){ + info(PlaceholderEnum.PACK_PLACEHOLDER,logger,message,arguments); + } + + public static void info(PlaceholderEnum placeholderEnum,Logger logger,String message,Object... arguments){ + StringBuilder result = new StringBuilder(message); + int replaceCount = 0; + for (int i = 0; i < arguments.length; i++){ + if(Objects.isNull(arguments[i])){ + int index = StringUtils.ordinalIndexOf(result.toString(), placeholderEnum.getValue(), i+1-replaceCount); + if(index > 0){ + replaceCount++; + result.replace(index,index + placeholderEnum.getValue().length(),""); + } + } + } + Object[] objects = Arrays.stream(arguments).filter(Objects::nonNull).toArray(); + logger.info(result.toString(),objects); + } + + public enum PlaceholderEnum{ + PLACEHOLDER("PLACEHOLDER","{}"), + PACK_PLACEHOLDER("PACK_PLACEHOLDER", "[{}]"); + + private String name; + private String value; + + PlaceholderEnum(String name, String value) { + this.name = name; + this.value = value; + } + + + private String getName(){ + return name; + } + + private String getValue(){ + return value; + } + } + + + public static void main(String[] args) { + +// String a = StringUtils.replace("{}sda{}{}{}","{}",""); +// int i1 = StringUtils.ordinalIndexOf("1{}sda{}{}{}", "{}", 0); + + } +} From 0c4d8e2f88f7c80c08c4f84d93adbc22a677f4b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E9=A1=BA=E5=87=AF?= Date: Sun, 12 Jun 2022 16:03:25 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/yomahub/liteflow/util/LogUtil.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java b/liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java index cf23fa264..f5bfa9707 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java @@ -61,11 +61,4 @@ public class LogUtil { } } - - public static void main(String[] args) { - -// String a = StringUtils.replace("{}sda{}{}{}","{}",""); -// int i1 = StringUtils.ordinalIndexOf("1{}sda{}{}{}", "{}", 0); - - } } From c1246b27bd919b4033ef18747eec813fea39c5bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E9=A1=BA=E5=87=AF?= Date: Sun, 12 Jun 2022 16:09:50 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=B8=B8=E9=87=8F=E6=8A=BD=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/yomahub/liteflow/util/LogUtil.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java b/liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java index f5bfa9707..a6c8d8ac3 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java @@ -13,6 +13,8 @@ import java.util.Objects; */ public class LogUtil { + private static final String EMPTY = ""; + /** * 日志输出,过滤掉null值的占位符 * @param logger @@ -31,7 +33,7 @@ public class LogUtil { int index = StringUtils.ordinalIndexOf(result.toString(), placeholderEnum.getValue(), i+1-replaceCount); if(index > 0){ replaceCount++; - result.replace(index,index + placeholderEnum.getValue().length(),""); + result.replace(index,index + placeholderEnum.getValue().length(),EMPTY); } } } From 470857fbf32ed343cefbadf7114f4c893f91796b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E9=A1=BA=E5=87=AF?= Date: Sun, 12 Jun 2022 23:21:52 +0800 Subject: [PATCH 4/4] getDispalyName --- .../yomahub/liteflow/core/NodeComponent.java | 9 +++ .../liteflow/core/ScriptComponent.java | 2 +- .../com/yomahub/liteflow/flow/FlowBus.java | 3 +- .../yomahub/liteflow/flow/element/Node.java | 7 +- .../liteflow/flow/executor/NodeExecutor.java | 2 +- .../com/yomahub/liteflow/util/LogUtil.java | 66 ------------------- 6 files changed, 16 insertions(+), 73 deletions(-) delete mode 100644 liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/core/NodeComponent.java b/liteflow-core/src/main/java/com/yomahub/liteflow/core/NodeComponent.java index 4588d7386..65003e0ec 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/core/NodeComponent.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/core/NodeComponent.java @@ -18,6 +18,7 @@ import com.yomahub.liteflow.enums.NodeTypeEnum; import com.yomahub.liteflow.property.LiteflowConfig; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.CmpAroundAspectHolder; +import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -303,4 +304,12 @@ public abstract class NodeComponent{ public String getChainName(){ return getSlot().getChainName(); } + + public String getDisplayName(){ + if(StringUtils.isEmpty(this.name)){ + return this.nodeId; + }else { + return this.nodeId + "(" + this.name + ")"; + } + } } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/core/ScriptComponent.java b/liteflow-core/src/main/java/com/yomahub/liteflow/core/ScriptComponent.java index 7ceb8572c..9e8aa1405 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/core/ScriptComponent.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/core/ScriptComponent.java @@ -19,7 +19,7 @@ public class ScriptComponent extends NodeComponent{ } public void loadScript(String script) { - log.info("load script for component[{}]", getNodeId()); + log.info("load script for component[{}][{}]", getNodeId(),getDisplayName()); ScriptExecutorFactory.loadInstance().getScriptExecutor().load(getNodeId(), script); } } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/FlowBus.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/FlowBus.java index dec157568..88d827442 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/FlowBus.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/FlowBus.java @@ -32,6 +32,7 @@ import com.yomahub.liteflow.spi.holder.ContextAwareHolder; import com.yomahub.liteflow.spi.local.LocalContextAware; import com.yomahub.liteflow.util.CopyOnWriteHashMap; import com.yomahub.liteflow.util.LiteFlowProxyUtil; +import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -156,7 +157,7 @@ public class FlowBus { nodeMap.put(nodeId, node); } catch (Exception e) { - String error = StrUtil.format("component[{}] register error", cmpClazz.getName()); + String error = StrUtil.format("component[{}][{}] register error", cmpClazz.getName(), StringUtils.isEmpty(name)?nodeId:nodeId+"("+name+")"); LOG.error(error, e); throw new ComponentCannotRegisterException(error); } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Node.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Node.java index e0d3069fb..b5246068d 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Node.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Node.java @@ -25,7 +25,6 @@ import com.yomahub.liteflow.enums.ExecuteTypeEnum; import com.yomahub.liteflow.enums.NodeTypeEnum; import com.yomahub.liteflow.exception.ChainEndException; import com.yomahub.liteflow.exception.FlowSystemException; -import com.yomahub.liteflow.util.LogUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -127,7 +126,7 @@ public class Node implements Executable,Cloneable{ if (instance.isAccess()) { //根据配置判断是否打印执行中的日志 if (BooleanUtil.isTrue(liteflowConfig.getPrintExecutionLog())){ - LogUtil.info(LOG,"[{}]:[O]start component[{}][{}] execution",slot.getRequestId(),instance.getClass().getSimpleName(),instance.getName()); + LOG.info("[{}]:[O]start component[{}][{}] execution",slot.getRequestId(),instance.getClass().getSimpleName(),instance.getDisplayName()); } //这里开始进行重试的逻辑和主逻辑的运行 @@ -136,12 +135,12 @@ public class Node implements Executable,Cloneable{ nodeExecutor.execute(instance); //如果组件覆盖了isEnd方法,或者在在逻辑中主要调用了setEnd(true)的话,流程就会立马结束 if (instance.isEnd()) { - String errorInfo = StrUtil.format("[{}]:component[{}] lead the chain to end", slot.getRequestId(), instance.getClass().getSimpleName()); + String errorInfo = StrUtil.format("[{}]:[{}] lead the chain to end", slot.getRequestId(), instance.getClass().getSimpleName(),instance.getDisplayName()); throw new ChainEndException(errorInfo); } } else { if (BooleanUtil.isTrue(liteflowConfig.getPrintExecutionLog())){ - LogUtil.info(LOG,"[{}]:[X]skip component[{}][{}] execution", slot.getRequestId(), instance.getClass().getSimpleName(),instance.getName()); + LOG.info("[{}]:[X]skip component[{}][{}] execution", slot.getRequestId(), instance.getClass().getSimpleName(),instance.getDisplayName()); } } } catch (ChainEndException e){ diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/executor/NodeExecutor.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/executor/NodeExecutor.java index 4f863b05a..f8b211cce 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/executor/NodeExecutor.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/executor/NodeExecutor.java @@ -50,7 +50,7 @@ public abstract class NodeExecutor { //执行重试逻辑 - 子类通过实现该方法进行重试逻辑的控制 protected void retry(NodeComponent instance, int currentRetryCount) throws Exception { Slot slot = DataBus.getSlot(instance.getSlotIndex()); - LOG.info("[{}]:component[{}] performs {} retry", slot.getRequestId(), instance.getNodeId(), currentRetryCount + 1); + LOG.info("[{}]:component[{}][{}] performs {} retry", slot.getRequestId(), instance.getNodeId(),instance.getDisplayName(), currentRetryCount + 1); //执行业务逻辑的主要入口 instance.execute(); } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java b/liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java deleted file mode 100644 index a6c8d8ac3..000000000 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/util/LogUtil.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.yomahub.liteflow.util; - -import org.apache.commons.lang.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Arrays; -import java.util.Objects; - -/** - * @author 惊云 - * @date 2022/6/12 11:05 - */ -public class LogUtil { - - private static final String EMPTY = ""; - - /** - * 日志输出,过滤掉null值的占位符 - * @param logger - * @param message - * @param arguments - */ - public static void info(Logger logger,String message,Object... arguments){ - info(PlaceholderEnum.PACK_PLACEHOLDER,logger,message,arguments); - } - - public static void info(PlaceholderEnum placeholderEnum,Logger logger,String message,Object... arguments){ - StringBuilder result = new StringBuilder(message); - int replaceCount = 0; - for (int i = 0; i < arguments.length; i++){ - if(Objects.isNull(arguments[i])){ - int index = StringUtils.ordinalIndexOf(result.toString(), placeholderEnum.getValue(), i+1-replaceCount); - if(index > 0){ - replaceCount++; - result.replace(index,index + placeholderEnum.getValue().length(),EMPTY); - } - } - } - Object[] objects = Arrays.stream(arguments).filter(Objects::nonNull).toArray(); - logger.info(result.toString(),objects); - } - - public enum PlaceholderEnum{ - PLACEHOLDER("PLACEHOLDER","{}"), - PACK_PLACEHOLDER("PACK_PLACEHOLDER", "[{}]"); - - private String name; - private String value; - - PlaceholderEnum(String name, String value) { - this.name = name; - this.value = value; - } - - - private String getName(){ - return name; - } - - private String getValue(){ - return value; - } - } - -}