This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git


The following commit(s) were added to refs/heads/master by this push:
     new 394449241 [#4811] Support logging fileName for configurations (#4838)
394449241 is described below

commit 394449241b3b3ad35ebb00a29d20a23f6332b1a0
Author: Alex <97039406+chengyoul...@users.noreply.github.com>
AuthorDate: Tue Jun 10 12:07:23 2025 +0800

    [#4811] Support logging fileName for configurations (#4838)
---
 .../config/center/client/ConfigCenterClient.java   | 43 ++++++++++++++++++++++
 .../servicecomb/config/kie/client/KieClient.java   | 38 +++++++++++++++++++
 2 files changed, 81 insertions(+)

diff --git 
a/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterClient.java
 
b/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterClient.java
index 25aedec66..66d9d154f 100644
--- 
a/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterClient.java
+++ 
b/clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterClient.java
@@ -18,7 +18,9 @@
 package org.apache.servicecomb.config.center.client;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.lang3.StringUtils;
@@ -33,6 +35,7 @@ import org.apache.servicecomb.http.client.common.HttpUtils;
 import 
org.apache.servicecomb.http.client.utils.ServiceCombServiceAvailableUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.util.CollectionUtils;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.google.common.eventbus.EventBus;
@@ -56,6 +59,8 @@ public class ConfigCenterClient implements 
ConfigCenterOperation {
 
   private final ConfigCenterAddressManager addressManager;
 
+  private final Map<String, List<String>> dimensionConfigNames = new 
HashMap<>();
+
   public ConfigCenterClient(ConfigCenterAddressManager addressManager, 
HttpTransport httpTransport) {
     this.addressManager = addressManager;
     this.httpTransport = httpTransport;
@@ -95,18 +100,24 @@ public class ConfigCenterClient implements 
ConfigCenterOperation {
 
         if (allConfigMap.get(APPLICATION_CONFIG) != null) {
           configurations.putAll(allConfigMap.get(APPLICATION_CONFIG));
+          logConfigurationNames(APPLICATION_CONFIG, 
allConfigMap.get(APPLICATION_CONFIG));
         }
 
         if (allConfigMap.get(buildDimensionsInfo(request, false)) != null) {
           configurations.putAll(allConfigMap.get(buildDimensionsInfo(request, 
false)));
+          logConfigurationNames(buildDimensionsInfo(request, false),
+              allConfigMap.get(buildDimensionsInfo(request, false)));
         }
 
         if (allConfigMap.get(buildDarkLaunchDimensionsInfo(request)) != null) {
           
configurations.putAll(allConfigMap.get(buildDarkLaunchDimensionsInfo(request)));
+          logConfigurationNames(buildDarkLaunchDimensionsInfo(request),
+              allConfigMap.get(buildDarkLaunchDimensionsInfo(request)));
         }
 
         if (allConfigMap.get(dimensionsInfo) != null) {
           configurations.putAll(allConfigMap.get(dimensionsInfo));
+          logConfigurationNames(dimensionsInfo, 
allConfigMap.get(dimensionsInfo));
         }
         queryConfigurationsResponse.setConfigurations(configurations);
         queryConfigurationsResponse.setChanged(true);
@@ -140,6 +151,38 @@ public class ConfigCenterClient implements 
ConfigCenterOperation {
     }
   }
 
+  /**
+   * Only the name of the new configuration item is printed.
+   * No log is printed when the configuration content is updated.
+   *
+   * @param dimension dimension
+   * @param configs configs
+   */
+  private void logConfigurationNames(String dimension, Map<String, Object> 
configs) {
+    if (CollectionUtils.isEmpty(configs)) {
+      return;
+    }
+    List<String> configNames = dimensionConfigNames.get(dimension);
+    if (configNames == null) {
+      configNames = new ArrayList<>();
+    }
+    StringBuilder names = new StringBuilder();
+    for (String key : configs.keySet()) {
+      if (configNames.contains(key)) {
+        continue;
+      }
+      names.append(key).append(",");
+      configNames.add(key);
+    }
+    if (names.isEmpty()) {
+      return;
+    }
+    dimensionConfigNames.put(dimension, configNames);
+    String fileNames = names.substring(0, names.length() - 1);
+    LOGGER.info("pulling dimension [{}] configurations success, get config 
names: [{}].",
+        dimension, fileNames);
+  }
+
   @Override
   public void checkAddressAvailable(String address) {
     ServiceCombServiceAvailableUtils.checkAddressAvailable(addressManager, 
address, httpTransport, ADDRESS_CHECK_PATH);
diff --git 
a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java
 
b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java
index 8379e046b..2ab932547 100644
--- 
a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java
+++ 
b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java
@@ -21,10 +21,12 @@ import com.google.common.eventbus.EventBus;
 
 import java.io.StringReader;
 import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.stream.Collectors;
@@ -49,6 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
 import org.springframework.core.io.ByteArrayResource;
+import org.springframework.util.CollectionUtils;
 
 public class KieClient implements KieConfigOperation {
 
@@ -66,6 +69,8 @@ public class KieClient implements KieConfigOperation {
 
   public static final String DEFAULT_KIE_API_VERSION = "v1";
 
+  private final Map<String, List<String>> dimensionConfigNames = new 
HashMap<>();
+
   public KieClient(KieAddressManager addressManager, HttpTransport 
httpTransport, KieConfiguration kieConfiguration) {
     this.httpTransport = httpTransport;
     this.addressManager = addressManager;
@@ -90,6 +95,7 @@ public class KieClient implements KieConfigOperation {
       if (httpResponse.getStatusCode() == HttpStatus.SC_OK) {
         revision = httpResponse.getHeader("X-Kie-Revision");
         KVResponse allConfigList = 
HttpUtils.deserialize(httpResponse.getContent(), KVResponse.class);
+        logConfigurationNames(request.getLabelsQuery(), 
allConfigList.getData());
         Map<String, Object> configurations = getConfigByLabel(allConfigList);
         configurationsResponse.setConfigurations(configurations);
         configurationsResponse.setChanged(true);
@@ -122,6 +128,38 @@ public class KieClient implements KieConfigOperation {
     }
   }
 
+  /**
+   * Only the name of the new configuration item is printed.
+   * No log is printed when the configuration content is updated.
+   *
+   * @param dimension dimension
+   * @param data configs-data
+   */
+  private void logConfigurationNames(String dimension, List<KVDoc> data) {
+    if (CollectionUtils.isEmpty(data)) {
+      return;
+    }
+    List<String> configNames = dimensionConfigNames.get(dimension);
+    if (configNames == null) {
+      configNames = new ArrayList<>();
+    }
+    StringBuilder names = new StringBuilder();
+    for (KVDoc doc : data) {
+      if (configNames.contains(doc.getKey())) {
+        continue;
+      }
+      names.append(doc.getKey()).append(",");
+      configNames.add(doc.getKey());
+    }
+    if (names.isEmpty()) {
+      return;
+    }
+    dimensionConfigNames.put(dimension, configNames);
+    String fileNames = names.substring(0, names.length() - 1);
+    LOGGER.info("pulling dimension [{}] configurations success, get config 
names: [{}].",
+        dimension, fileNames);
+  }
+
   @Override
   public void checkAddressAvailable(String address) {
     ServiceCombServiceAvailableUtils.checkAddressAvailable(addressManager, 
address, httpTransport, ADDRESS_CHECK_PATH);

Reply via email to