[#4811] Support logging fileName for configurations (#4838)

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 25aedec..66d9d15 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.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 @@
 
   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 @@
 
         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 @@
     }
   }
 
+  /**
+   * 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 8379e04..2ab9325 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 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.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 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 @@
       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 @@
     }
   }
 
+  /**
+   * 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);