From 30f3fe7a2635ced4495fdf7b09d15d6fc65161e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?= <15040126243@163.com> Date: Thu, 6 Jan 2022 15:26:17 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=9B=B4=E6=96=B0=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=BC=80=E5=85=B3=E4=B8=8E=E8=AE=A2=E9=98=85?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/application.yml | 14 ++++++-- ruoyi-auth/src/main/resources/bootstrap.yml | 6 ++++ .../dubbo/filter/DubboRequestFilter.java | 33 ++++++++++++++----- .../properties/DubboCustomProperties.java | 20 +++++++++++ .../main/resources/META-INF/spring.factories | 3 +- ruoyi-common/ruoyi-common-log/pom.xml | 6 ++-- .../common/log/service/AsyncLogService.java | 2 +- .../src/main/resources/bootstrap.yml | 6 ++++ .../src/main/resources/bootstrap.yml | 6 ++++ .../src/main/resources/bootstrap.yml | 6 ++++ .../src/main/resources/bootstrap.yml | 6 ++++ 11 files changed, 91 insertions(+), 17 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-dubbo/src/main/java/com/ruoyi/common/dubbo/properties/DubboCustomProperties.java diff --git a/config/application.yml b/config/application.yml index 451e93fc..d7e31317 100644 --- a/config/application.yml +++ b/config/application.yml @@ -22,19 +22,27 @@ dubbo: name: dubbo # dubbo 协议端口(-1表示自增端口,从20880开始) port: -1 - # 挂载到 Spring Cloud 注册中心 + # 注册中心配置 registry: address: nacos://${spring.cloud.nacos.server-addr} group: DUBBO_GROUP + # 消费者相关配置 consumer: + # 结果缓存(LRU算法) cache: true + # 支持校验注解 validation: true + # 超时时间 timeout: 3000 + # 初始化检查 check: false scan: + # 接口实现类扫描 base-packages: com.ruoyi.**.dubbo - cloud: - subscribed-services: ${dubbo.application.name} + # 自定义配置 + custom: + # 全局请求log + request-log: true spring: main: diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml index 127bf0f5..a49b9179 100644 --- a/ruoyi-auth/src/main/resources/bootstrap.yml +++ b/ruoyi-auth/src/main/resources/bootstrap.yml @@ -11,6 +11,12 @@ spring: # 环境配置 active: @profiles.active@ +--- # dubbo 订阅配置 +dubbo: + cloud: + # 需要远程调用的服务 多个用逗号分割 + subscribed-services: ruoyi-system + --- # nacos 配置 spring: cloud: diff --git a/ruoyi-common/ruoyi-common-dubbo/src/main/java/com/ruoyi/common/dubbo/filter/DubboRequestFilter.java b/ruoyi-common/ruoyi-common-dubbo/src/main/java/com/ruoyi/common/dubbo/filter/DubboRequestFilter.java index 85c00b7b..9ce4e2b5 100644 --- a/ruoyi-common/ruoyi-common-dubbo/src/main/java/com/ruoyi/common/dubbo/filter/DubboRequestFilter.java +++ b/ruoyi-common/ruoyi-common-dubbo/src/main/java/com/ruoyi/common/dubbo/filter/DubboRequestFilter.java @@ -1,32 +1,47 @@ package com.ruoyi.common.dubbo.filter; import com.ruoyi.common.core.utils.JsonUtils; +import com.ruoyi.common.core.utils.SpringUtils; +import com.ruoyi.common.dubbo.properties.DubboCustomProperties; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.constants.CommonConstants; import org.apache.dubbo.common.extension.Activate; import org.apache.dubbo.rpc.*; import org.apache.dubbo.rpc.service.GenericService; +/** + * dubbo日志过滤器 + * + * @author Lion Li + */ @Slf4j @Activate(group = { CommonConstants.PROVIDER, CommonConstants.CONSUMER }) public class DubboRequestFilter implements Filter { @Override public Result invoke(Invoker invoker, Invocation invocation) throws RpcException { - //打印入参日志 - log.info("DUBBO - 服务入参: InterfaceName=[{}],MethodName=[{}],Parameter=[{}]", invocation.getInvoker().getInterface().getName(), invocation.getMethodName(), invocation.getArguments()); - //开始时间 + DubboCustomProperties properties = SpringUtils.getBean(DubboCustomProperties.class); + if (!properties.getRequestLog()) { + // 未开启则跳过日志逻辑 + return invoker.invoke(invocation); + } + String client = CommonConstants.PROVIDER; + if (RpcContext.getContext().isConsumerSide()) { + client = CommonConstants.CONSUMER; + } + String baselog = "Client[" + client + "],InterfaceName=[" + invocation.getInvoker().getInterface().getName() + "],MethodName=[" + invocation.getMethodName() + "]"; + log.info("DUBBO - 服务调用: {},Parameter=[{}]", baselog, invocation.getArguments()); + long startTime = System.currentTimeMillis(); - //执行接口调用逻辑 + // 执行接口调用逻辑 Result result = invoker.invoke(invocation); - //调用耗时 + // 调用耗时 long elapsed = System.currentTimeMillis() - startTime; - //如果发生异常 则打印异常日志 + // 如果发生异常 则打印异常日志 if (result.hasException() && invoker.getInterface().equals(GenericService.class)) { - log.error("DUBBO - 执行异常: ", result.getException()); + log.error("DUBBO - 服务异常: {},Exception=[{}]", baselog, result.getException()); } else { - //打印响应日志 - log.info("DUBBO - 服务响应: InterfaceName=[{}],MethodName=[{}],SpendTime=[{}ms],Response=[{}]", invocation.getInvoker().getInterface().getName(), invocation.getMethodName(), elapsed, JsonUtils.toJsonString(new Object[]{result.getValue()})); + log.info("DUBBO - 服务响应: {},SpendTime=[{}ms],Response=[{}]", baselog, elapsed, JsonUtils.toJsonString(new Object[]{result.getValue()})); } return result; } diff --git a/ruoyi-common/ruoyi-common-dubbo/src/main/java/com/ruoyi/common/dubbo/properties/DubboCustomProperties.java b/ruoyi-common/ruoyi-common-dubbo/src/main/java/com/ruoyi/common/dubbo/properties/DubboCustomProperties.java new file mode 100644 index 00000000..1e2d1d61 --- /dev/null +++ b/ruoyi-common/ruoyi-common-dubbo/src/main/java/com/ruoyi/common/dubbo/properties/DubboCustomProperties.java @@ -0,0 +1,20 @@ +package com.ruoyi.common.dubbo.properties; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; + +/** + * 自定义配置 + * + * @author Lion Li + */ +@Data +@RefreshScope +@Component +@ConfigurationProperties(prefix = "dubbo.custom") +public class DubboCustomProperties { + + private Boolean requestLog; +} diff --git a/ruoyi-common/ruoyi-common-dubbo/src/main/resources/META-INF/spring.factories b/ruoyi-common/ruoyi-common-dubbo/src/main/resources/META-INF/spring.factories index 485802b1..d3d1422e 100644 --- a/ruoyi-common/ruoyi-common-dubbo/src/main/resources/META-INF/spring.factories +++ b/ruoyi-common/ruoyi-common-dubbo/src/main/resources/META-INF/spring.factories @@ -1 +1,2 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration= \ No newline at end of file +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + com.ruoyi.common.dubbo.properties.DubboCustomProperties \ No newline at end of file diff --git a/ruoyi-common/ruoyi-common-log/pom.xml b/ruoyi-common/ruoyi-common-log/pom.xml index 54845ea4..88de293b 100644 --- a/ruoyi-common/ruoyi-common-log/pom.xml +++ b/ruoyi-common/ruoyi-common-log/pom.xml @@ -24,10 +24,10 @@ - com.ruoyi - ruoyi-common-dubbo + com.alibaba.cloud + spring-cloud-starter-dubbo provided - + \ No newline at end of file diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/service/AsyncLogService.java b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/service/AsyncLogService.java index 608377ff..771eb2f4 100644 --- a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/service/AsyncLogService.java +++ b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/service/AsyncLogService.java @@ -15,7 +15,7 @@ import org.springframework.stereotype.Service; @Service public class AsyncLogService { - @DubboReference(async = true) + @DubboReference private RemoteLogService remoteLogService; /** diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/ruoyi-gateway/src/main/resources/bootstrap.yml index 87332e04..286d13da 100644 --- a/ruoyi-gateway/src/main/resources/bootstrap.yml +++ b/ruoyi-gateway/src/main/resources/bootstrap.yml @@ -11,6 +11,12 @@ spring: # 环境配置 active: @profiles.active@ +--- # dubbo 订阅配置 +dubbo: + cloud: + # 需要远程调用的服务 多个用逗号分割 + subscribed-services: ruoyi-auth,ruoyi-system + --- # nacos 配置 spring: cloud: diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml index 2f967d85..8d40b784 100644 --- a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml @@ -11,6 +11,12 @@ spring: # 环境配置 active: @profiles.active@ +--- # dubbo 订阅配置 +dubbo: + cloud: + # 需要远程调用的服务 多个用逗号分割 + subscribed-services: ruoyi-system + --- # nacos 配置 spring: cloud: diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml index df091876..7a1010bc 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml @@ -17,6 +17,12 @@ swagger: license: ${swagger.license} licenseUrl: ${swagger.licenseUrl} +--- # dubbo 订阅配置 +dubbo: + cloud: + # 需要远程调用的服务 多个用逗号分割 + subscribed-services: ruoyi-system + --- # nacos 配置 spring: cloud: diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml index c40b2f65..a1f0593b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml @@ -17,6 +17,12 @@ swagger: license: ${swagger.license} licenseUrl: ${swagger.licenseUrl} +--- # dubbo 订阅配置 +dubbo: + cloud: + # 需要远程调用的服务 多个用逗号分割 + subscribed-services: ruoyi-file + --- # nacos 配置 spring: cloud: