From e221cb1d6ba1ea886e6609c4752eee0b4df84bd6 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Sat, 14 Sep 2024 14:56:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-2924)=20-=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=91=8A=E8=AD=A6=E7=9A=84=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/common/annotation/ReporterType.java | 12 ++++++------ .../server/common/aspectj/ErrorReportAspect.java | 8 +++++++- .../workflow/server/common/util/DingTalkUtils.java | 9 ++++++--- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/annotation/ReporterType.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/annotation/ReporterType.java index e42b9df9d..034fdfd47 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/annotation/ReporterType.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/annotation/ReporterType.java @@ -20,9 +20,9 @@ public enum ReporterType { */ ONLY_DING_TALK { @Override - public void executeAction(String profile, String title, Boolean sendDingTalk, Object[] args, String shortString, Throwable e, Boolean downgrade) { + public void executeAction(String profile, String title, Boolean sendDingTalk, Object[] args, String shortString, String invokeServerName, Throwable e, Boolean downgrade) { if (sendDingTalk) { - DingTalkUtils.sendDingTalk(profile, title, argsArrayToString(args), e); + DingTalkUtils.sendDingTalk(profile, title, argsArrayToString(args), invokeServerName, e); } } @@ -32,7 +32,7 @@ public enum ReporterType { */ ONLY_LOG { @Override - public void executeAction(String profile, String title, Boolean sendDingTalk, Object[] args, String shortString, Throwable e, Boolean downgrade) { + public void executeAction(String profile, String title, Boolean sendDingTalk, Object[] args, String shortString, String invokeServerName, Throwable e, Boolean downgrade) { if (downgrade) { log.warn("ER: {}", e.getMessage()); } else { @@ -46,9 +46,9 @@ public enum ReporterType { */ BOTH { @Override - public void executeAction(String profile, String title, Boolean sendDingTalk, Object[] args, String shortString, Throwable e, Boolean downgrade) { + public void executeAction(String profile, String title, Boolean sendDingTalk, Object[] args, String shortString, String invokeServerName, Throwable e, Boolean downgrade) { if (sendDingTalk) { - DingTalkUtils.sendDingTalk(profile, title, argsArrayToString(args), e); + DingTalkUtils.sendDingTalk(profile, title, argsArrayToString(args),invokeServerName, e); } if (downgrade) { log.warn("ER: {}", e.getMessage()); @@ -66,7 +66,7 @@ public enum ReporterType { * @param shortString 用于日志输出的关键信息 * @param e 异常对象 */ - public abstract void executeAction(String profile, String title, Boolean sendDingTalk, Object[] args, String shortString, Throwable e, Boolean downgrade); + public abstract void executeAction(String profile, String title, Boolean sendDingTalk, Object[] args, String shortString, String invokeServerName, Throwable e, Boolean downgrade); private static void logWarn(Throwable throwable, String shortString) { // 由于框架底层 AbstractExceptionApiResultHandler 默认会打印,所以此处都只是降级打印 diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/aspectj/ErrorReportAspect.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/aspectj/ErrorReportAspect.java index dbebfcaae..3e2c96221 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/aspectj/ErrorReportAspect.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/aspectj/ErrorReportAspect.java @@ -138,7 +138,13 @@ public class ErrorReportAspect implements Ordered { } log.warn("request header server name: {}", getHeader()); - envConfig.type().executeAction(profile, operation.summary(), filterSendDingTalk, joinPoint.getArgs(), joinPoint.getSignature().toShortString(), e, + envConfig.type().executeAction(profile, + operation.summary(), + filterSendDingTalk, + joinPoint.getArgs(), + joinPoint.getSignature().toShortString(), + getHeader(), + e, workflowProperties.getFilterOperations().contains(operation.summary())); } diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/util/DingTalkUtils.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/util/DingTalkUtils.java index 0af16217a..7fa8f7838 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/util/DingTalkUtils.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/util/DingTalkUtils.java @@ -68,17 +68,20 @@ public class DingTalkUtils { } @SneakyThrows - public static void sendDingTalk(String profile, String title, Object req, Throwable throwable) { + public static void sendDingTalk(String profile, String title, Object req, String invokeServerName, Throwable throwable) { OapiRobotSendRequest request = new OapiRobotSendRequest(); request.setMsgtype("markdown"); OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown(); markdown.setTitle("Notice " + title + ", Env: " + profile); - markdown.setText("#### [" + profile + "]" + title + "\n" + + String text = "#### [" + profile + "]" + title + "\n" + "> 入参: " + JSONUtil.toJsonStr(req) + "\n\n" + "> ###### 异常信息: " + JSONUtil.toJsonStr(Objects.isNull(throwable.getCause()) ? throwable.getMessage() : throwable.getCause().getMessage()) + " \n\n" + "> ##### traceId: " + MDC.get(CTX_LOG_ID_MDC) + " \n" + - "> ##### [点击查看异常明细](" + getDeadLetterStacktrace(profile, req) + ") \n"); + "> ##### 调用方服务名称:" + invokeServerName + " \n"; + String deadLetterStacktrace = getDeadLetterStacktrace(profile, req); + text = text + (StringUtils.hasText(deadLetterStacktrace) ? "> ##### [点击查看异常明细](" + deadLetterStacktrace + ") \n" : ""); + markdown.setText(text); request.setMarkdown(markdown); sendDingTalk(request); }