From 2bebe80382b20271f8e43705d52dac376cb86c6f Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 28 Jun 2024 17:33:52 +0800 Subject: [PATCH] =?UTF-8?q?update=20-=20API=20log=20=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=AE=B0=E5=BD=95,=E5=A2=9E=E5=8A=A0=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E6=96=B9=E5=92=8C=E5=AE=A2=E6=88=B7=E7=AB=AF=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/core/common/event/ApiLogEvent.java | 15 ++++++++++++++- .../core/repository/entity/ExtAxApiLog.java | 10 ++++++++++ .../main/resources/sql/upgrade_to_1.3.3.1.sql | 6 ++++++ .../server/common/aspectj/ErrorReportAspect.java | 16 ++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/event/ApiLogEvent.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/event/ApiLogEvent.java index 7e9bef655..d9920b8ec 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/event/ApiLogEvent.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/event/ApiLogEvent.java @@ -13,15 +13,20 @@ import org.springframework.context.ApplicationEvent; public class ApiLogEvent extends ApplicationEvent { private String traceId; private String apiUrl; + private String requestApplicationName; + private String clientVersion; private Object requestBody; private Object responseBody; private Double takeTime; private String type; - public ApiLogEvent(String traceId, String apiUrl, Object requestBody, Object responseBody, Double takeTime, String type) { + public ApiLogEvent(String traceId, String apiUrl, String requestApplicationName, String clientVersion, + Object requestBody, Object responseBody, Double takeTime, String type) { super(apiUrl); this.traceId = traceId; this.apiUrl = apiUrl; + this.requestApplicationName = requestApplicationName; + this.clientVersion = clientVersion; this.requestBody = requestBody; this.responseBody = responseBody; this.takeTime = takeTime; @@ -40,6 +45,14 @@ public class ApiLogEvent extends ApplicationEvent { return apiUrl; } + public String getRequestApplicationName() { + return requestApplicationName; + } + + public String getClientVersion() { + return clientVersion; + } + public Object getRequestBody() { return requestBody; } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ExtAxApiLog.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ExtAxApiLog.java index b127fa297..a180f272b 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ExtAxApiLog.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/repository/entity/ExtAxApiLog.java @@ -28,6 +28,16 @@ public class ExtAxApiLog extends BaseEntity { */ private String apiUrl; + /** + * 请求方服务名称 + */ + private String requestApplicationName; + + /** + * 客户端 API 版本 + */ + private String clientVersion; + /** * 请求参数 */ diff --git a/workflow-engine-core/src/main/resources/sql/upgrade_to_1.3.3.1.sql b/workflow-engine-core/src/main/resources/sql/upgrade_to_1.3.3.1.sql index 07870abc5..3e9d73185 100644 --- a/workflow-engine-core/src/main/resources/sql/upgrade_to_1.3.3.1.sql +++ b/workflow-engine-core/src/main/resources/sql/upgrade_to_1.3.3.1.sql @@ -1,3 +1,9 @@ alter table ext_ax_api_log modify request_body longblob null comment '请求参数'; +alter table ext_ax_api_log + add request_application_name varchar(20) default '' null comment '请求方服务名称' after type; + +alter table ext_ax_api_log + add client_version varchar(20) default '' null comment '客户端 API 版本' after request_application_name; + 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 1756449a0..be686966f 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 @@ -20,11 +20,16 @@ import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import org.springframework.util.StopWatch; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import java.util.Arrays; import java.util.Objects; +import static cn.axzo.workflow.client.config.WorkflowRequestInterceptor.HEADER_API_VERSION; +import static cn.axzo.workflow.client.config.WorkflowRequestInterceptor.HEADER_SERVER_NAME; import static cn.azxo.framework.common.constatns.Constants.CTX_LOG_ID_MDC; /** @@ -72,6 +77,8 @@ public class ErrorReportAspect implements Ordered { String type = getType(joinPoint); ApiLogEvent event = new ApiLogEvent(MDC.get(CTX_LOG_ID_MDC), signature.toShortString(), + Objects.isNull(getOriginRequest()) ? "" : getOriginRequest().getHeader(HEADER_SERVER_NAME), + Objects.isNull(getOriginRequest()) ? "" : getOriginRequest().getHeader(HEADER_API_VERSION), Objects.equals(type, "Controller") ? joinPoint.getArgs() : null, Objects.equals(type, "Controller") ? result : null, watch.getTotalTimeSeconds(), @@ -127,4 +134,13 @@ public class ErrorReportAspect implements Ordered { } } } + + private HttpServletRequest getOriginRequest() { + try { + ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + return Objects.requireNonNull(requestAttributes).getRequest(); + } catch (Exception e) { + return null; + } + } }