Просмотр исходного кода

update 更新动态日志开关与订阅服务配置

疯狂的狮子li 4 лет назад
Родитель
Сommit
30f3fe7a26

+ 11 - 3
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:

+ 6 - 0
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:

+ 24 - 9
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;
     }

+ 20 - 0
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;
+}

+ 2 - 1
ruoyi-common/ruoyi-common-dubbo/src/main/resources/META-INF/spring.factories

@@ -1 +1,2 @@
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+  com.ruoyi.common.dubbo.properties.DubboCustomProperties

+ 3 - 3
ruoyi-common/ruoyi-common-log/pom.xml

@@ -24,10 +24,10 @@
         </dependency>
 
         <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-common-dubbo</artifactId>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-dubbo</artifactId>
             <scope>provided</scope>
         </dependency>
-        
+
     </dependencies>
 </project>

+ 1 - 1
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;
 
     /**

+ 6 - 0
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:

+ 6 - 0
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:

+ 6 - 0
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:

+ 6 - 0
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: