diff --git a/Dockerfile.nodejs b/Dockerfile.nodejs index f8c37fb..f4d3ced 100644 --- a/Dockerfile.nodejs +++ b/Dockerfile.nodejs @@ -1,27 +1,12 @@ -# Build stage -FROM node:18-alpine AS build - -WORKDIR /src - -# Copy client library -COPY kenaito-conf-nodejs-client/ ./kenaito-conf-nodejs-client/ - -# Copy demo project -COPY kenaito-conf-nodejs-client-demo/ ./kenaito-conf-nodejs-client-demo/ - -# Install client locally, then demo dependencies -WORKDIR /src/kenaito-conf-nodejs-client -RUN npm link - -WORKDIR /src/kenaito-conf-nodejs-client-demo -RUN npm link kenaito-conf && npm install - -# Runtime stage FROM node:18-alpine WORKDIR /app -COPY --from=build /src/kenaito-conf-nodejs-client-demo . + +COPY kenaito-conf-nodejs-client/ ./kenaito-conf-nodejs-client/ +COPY kenaito-conf-nodejs-client-demo/ ./kenaito-conf-nodejs-client-demo/ + +WORKDIR /app/kenaito-conf-nodejs-client-demo +RUN npm install ../kenaito-conf-nodejs-client && npm install EXPOSE 8083 - CMD ["node", "app.js"] diff --git a/kenaito-conf-go-client/client.go b/kenaito-conf-go-client/client.go index b25aabc..eabc3b8 100644 --- a/kenaito-conf-go-client/client.go +++ b/kenaito-conf-go-client/client.go @@ -231,7 +231,7 @@ func (c *Client) fetchChanged() error { delete(c.configs, key) } c.mu.Unlock() - log.Printf("[ConfigClient] %d configs deleted", len(deletedKeys)) + log.Printf("[ConfigClient] %d configs deleted: %s", len(deletedKeys), strings.Join(deletedKeys, ", ")) delete(wrapper.Data, "deletedKeys") } @@ -250,7 +250,11 @@ func (c *Client) fetchChanged() error { // notify listeners c.listener.Notify(changed) - log.Printf("[ConfigClient] %d configs changed", len(changed)) + changedKeys := make([]string, 0, len(changed)) + for k := range changed { + changedKeys = append(changedKeys, k) + } + log.Printf("[ConfigClient] %d configs changed: %s", len(changed), strings.Join(changedKeys, ", ")) } return nil diff --git a/kenaito-conf-nodejs-client-demo/app.js b/kenaito-conf-nodejs-client-demo/app.js index 18ff582..39bc894 100644 --- a/kenaito-conf-nodejs-client-demo/app.js +++ b/kenaito-conf-nodejs-client-demo/app.js @@ -15,7 +15,7 @@ function onConfigChanged(changed) { for (const [k, v] of Object.entries(changed)) { if (k in configValues) { configValues[k] = v; - console.log(`config updated: ${k} = ${v}`); + console.error(`config updated: ${k} = ${v}`); } } } @@ -57,13 +57,13 @@ async function main() { configValues[k] = remote[k]; } } - console.info(`loaded ${Object.keys(remote).length} configs from remote`); + console.error(`loaded ${Object.keys(remote).length} configs from remote`); } catch (err) { console.error('failed to init config client, using local defaults:', err); } app.listen(port, '0.0.0.0', () => { - console.info(`server started on port ${port}`); + console.error(`server started on port ${port}`); }); } diff --git a/kenaito-conf-nodejs-client/lib/client.js b/kenaito-conf-nodejs-client/lib/client.js index 0b5849c..2d4aca5 100644 --- a/kenaito-conf-nodejs-client/lib/client.js +++ b/kenaito-conf-nodejs-client/lib/client.js @@ -38,7 +38,7 @@ export class ConfigClient { const cached = this.cache.read(); if (cached) { this.applyConfigs(cached); - console.info('[ConfigClient] loaded', Object.keys(this.configs).length, 'configs from cache'); + console.error('[ConfigClient] loaded', Object.keys(this.configs).length, 'configs from cache'); } else { throw new Error(`fetch configs failed and no cache: ${err.message}`); } @@ -90,7 +90,7 @@ export class ConfigClient { this.cache.write(data); this.applyConfigs(data); - console.info('[ConfigClient] fetched', Object.keys(this.configs).length, 'configs'); + console.error('[ConfigClient] fetched', Object.keys(this.configs).length, 'configs'); } async fetchChanged() { @@ -134,7 +134,7 @@ export class ConfigClient { for (const key of deletedKeys) { delete this.configs[key]; } - console.info('[ConfigClient]', deletedKeys.length, 'configs deleted'); + console.error('[ConfigClient]', deletedKeys.length, 'configs deleted:', deletedKeys.join(', ')); delete changedData['deletedKeys']; } @@ -145,7 +145,7 @@ export class ConfigClient { Object.assign(this.configs, changed); this.listener.notify(changed); - console.info('[ConfigClient]', Object.keys(changed).length, 'configs changed'); + console.error('[ConfigClient]', Object.keys(changed).length, 'configs changed:', Object.keys(changed).join(', ')); } applyConfigs(data) { diff --git a/kenaito-conf-python-client/kenaito_conf/client.py b/kenaito-conf-python-client/kenaito_conf/client.py index ca4ed60..47e8852 100644 --- a/kenaito-conf-python-client/kenaito_conf/client.py +++ b/kenaito-conf-python-client/kenaito_conf/client.py @@ -110,7 +110,7 @@ class ConfigClient: with self._lock: for key in deleted_keys: self._configs.pop(key, None) - logger.info("[ConfigClient] %d configs deleted", len(deleted_keys)) + logger.info("[ConfigClient] %d configs deleted: %s", len(deleted_keys), ", ".join(deleted_keys)) if changed_data: changed = {} @@ -121,7 +121,7 @@ class ConfigClient: self._configs.update(changed) self._listener.notify(changed) - logger.info("[ConfigClient] %d configs changed", len(changed)) + logger.info("[ConfigClient] %d configs changed: %s", len(changed), ", ".join(changed.keys())) def _apply_configs(self, data: dict) -> None: with self._lock: diff --git a/kenaito-conf-springboot2-client/src/main/java/cn/odboy/confcenter/InternalConfigChangeListener.java b/kenaito-conf-springboot2-client/src/main/java/cn/odboy/confcenter/InternalConfigChangeListener.java index 590fcec..a35d670 100644 --- a/kenaito-conf-springboot2-client/src/main/java/cn/odboy/confcenter/InternalConfigChangeListener.java +++ b/kenaito-conf-springboot2-client/src/main/java/cn/odboy/confcenter/InternalConfigChangeListener.java @@ -69,7 +69,7 @@ public class InternalConfigChangeListener { if (deletedKeysStr != null && !deletedKeysStr.isEmpty()) { String[] deletedKeys = deletedKeysStr.split(","); context.removeConfigs(java.util.Arrays.asList(deletedKeys)); - logger.info("[ConfigClient] {} configs deleted", deletedKeys.length); + logger.info("[ConfigClient] {} configs deleted: {}", deletedKeys.length, String.join(", ", deletedKeys)); } } if (!data.isEmpty()) context.updateConfig(data); diff --git a/web/src/views/config/ConfigList.vue b/web/src/views/config/ConfigList.vue index dcbd042..e8f6986 100644 --- a/web/src/views/config/ConfigList.vue +++ b/web/src/views/config/ConfigList.vue @@ -1,15 +1,24 @@