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/incubator-servicecomb-java-chassis.git
commit 3f7249bafed42984cf528fad0e2d1ef10a7a69a8 Author: zhengyangyong <[email protected]> AuthorDate: Fri Jan 5 14:29:29 2018 +0800 SCB-85 fix pr comment Signed-off-by: zhengyangyong <[email protected]> --- .../foundation/metrics/MetricsServoRegistry.java | 4 +- .../metrics-write-file-config-log4j/pom.xml | 2 +- .../writefile/config/Log4JMetricsFileWriter.java | 2 +- .../metrics-write-file-config-log4j2/pom.xml | 2 +- .../writefile/config/Log4J2MetricsFileWriter.java | 4 +- .../metrics-write-file-config/pom.xml | 1 - .../writefile/SimpleFileContentConvertor.java | 5 +- .../writefile/SimpleFileContentFormatter.java | 31 ++----- .../extension/writefile/WriteFileInitializer.java | 61 ++++++++------ .../src/test/java/TestWriteFile.java | 98 ++++++++++++++++++++-- .../metrics-write-file-log4j-springboot/pom.xml | 13 +-- .../metrics-write-file-log4j/pom.xml | 10 +-- .../metrics-write-file-log4j2-springboot/pom.xml | 10 +-- .../metrics-write-file-log4j2/pom.xml | 10 +-- 14 files changed, 148 insertions(+), 105 deletions(-) diff --git a/foundations/foundation-metrics/src/main/java/io/servicecomb/foundation/metrics/MetricsServoRegistry.java b/foundations/foundation-metrics/src/main/java/io/servicecomb/foundation/metrics/MetricsServoRegistry.java index 2e53265..4d90bbd 100644 --- a/foundations/foundation-metrics/src/main/java/io/servicecomb/foundation/metrics/MetricsServoRegistry.java +++ b/foundations/foundation-metrics/src/main/java/io/servicecomb/foundation/metrics/MetricsServoRegistry.java @@ -75,7 +75,7 @@ public class MetricsServoRegistry implements InitializingBean { /* * Added getter for unit test of local metrics. - * + * * @return Local metric reference */ public MetricsDataMonitor getLocalMetrics() { @@ -563,7 +563,7 @@ public class MetricsServoRegistry implements InitializingBean { } private double round(double value, int places) { - if (!Double.isNaN(value) && !Double.isInfinite(value)) { + if (!Double.isNaN(value)) { BigDecimal decimal = new BigDecimal(value); return decimal.setScale(places, RoundingMode.HALF_UP).doubleValue(); } else { diff --git a/metrics/metrics-extension/metrics-write-file-config-log4j/pom.xml b/metrics/metrics-extension/metrics-write-file-config-log4j/pom.xml index 36c9091..7d19c96 100644 --- a/metrics/metrics-extension/metrics-write-file-config-log4j/pom.xml +++ b/metrics/metrics-extension/metrics-write-file-config-log4j/pom.xml @@ -31,7 +31,7 @@ <dependencies> <dependency> <groupId>io.servicecomb</groupId> - <artifactId>metrics-write-file-config</artifactId> + <artifactId>metrics-write-file</artifactId> </dependency> <dependency> diff --git a/metrics/metrics-extension/metrics-write-file-config-log4j/src/main/java/io/servicecomb/metrics/extension/writefile/config/Log4JMetricsFileWriter.java b/metrics/metrics-extension/metrics-write-file-config-log4j/src/main/java/io/servicecomb/metrics/extension/writefile/config/Log4JMetricsFileWriter.java index 7b263de..f605db9 100644 --- a/metrics/metrics-extension/metrics-write-file-config-log4j/src/main/java/io/servicecomb/metrics/extension/writefile/config/Log4JMetricsFileWriter.java +++ b/metrics/metrics-extension/metrics-write-file-config-log4j/src/main/java/io/servicecomb/metrics/extension/writefile/config/Log4JMetricsFileWriter.java @@ -63,7 +63,7 @@ public class Log4JMetricsFileWriter implements MetricsFileWriter { } private RollingFileAppender initLogger(String loggerName, String filePrefix) { - String fileName = Paths.get(rootPath, filePrefix + loggerName + ".dat").toString(); + String fileName = Paths.get(rootPath, filePrefix + "." + loggerName + ".dat").toString(); RollingFileAppender fileAppender = new RollingFileAppender(); fileAppender.setName(loggerName); fileAppender.setFile(fileName); diff --git a/metrics/metrics-extension/metrics-write-file-config-log4j2/pom.xml b/metrics/metrics-extension/metrics-write-file-config-log4j2/pom.xml index dde9d09..366906c 100644 --- a/metrics/metrics-extension/metrics-write-file-config-log4j2/pom.xml +++ b/metrics/metrics-extension/metrics-write-file-config-log4j2/pom.xml @@ -31,7 +31,7 @@ <dependencies> <dependency> <groupId>io.servicecomb</groupId> - <artifactId>metrics-write-file-config</artifactId> + <artifactId>metrics-write-file</artifactId> </dependency> <dependency> diff --git a/metrics/metrics-extension/metrics-write-file-config-log4j2/src/main/java/io/servicecomb/metrics/extension/writefile/config/Log4J2MetricsFileWriter.java b/metrics/metrics-extension/metrics-write-file-config-log4j2/src/main/java/io/servicecomb/metrics/extension/writefile/config/Log4J2MetricsFileWriter.java index 54f9818..a086266 100644 --- a/metrics/metrics-extension/metrics-write-file-config-log4j2/src/main/java/io/servicecomb/metrics/extension/writefile/config/Log4J2MetricsFileWriter.java +++ b/metrics/metrics-extension/metrics-write-file-config-log4j2/src/main/java/io/servicecomb/metrics/extension/writefile/config/Log4J2MetricsFileWriter.java @@ -68,8 +68,8 @@ public class Log4J2MetricsFileWriter implements MetricsFileWriter { } private RollingFileAppender initLogger(String loggerName, String filePrefix) { - String fileName = Paths.get(rootPath, filePrefix + loggerName + ".dat").toString(); - String filePattern = Paths.get(rootPath, filePrefix + loggerName + "-%i.dat").toString(); + String fileName = Paths.get(rootPath, filePrefix + "." + loggerName + ".dat").toString(); + String filePattern = Paths.get(rootPath, filePrefix + "." + loggerName + "-%i.dat").toString(); PatternLayout layout = PatternLayout.newBuilder().withPattern(PatternLayout.DEFAULT_CONVERSION_PATTERN).build(); SizeBasedTriggeringPolicy policy = SizeBasedTriggeringPolicy.createPolicy(maxFileSize); diff --git a/metrics/metrics-extension/metrics-write-file-config/pom.xml b/metrics/metrics-extension/metrics-write-file-config/pom.xml index 86b5ea3..8b09963 100644 --- a/metrics/metrics-extension/metrics-write-file-config/pom.xml +++ b/metrics/metrics-extension/metrics-write-file-config/pom.xml @@ -28,5 +28,4 @@ <artifactId>metrics-write-file-config</artifactId> - </project> \ No newline at end of file diff --git a/metrics/metrics-extension/metrics-write-file/src/main/java/io/servicecomb/metrics/extension/writefile/SimpleFileContentConvertor.java b/metrics/metrics-extension/metrics-write-file/src/main/java/io/servicecomb/metrics/extension/writefile/SimpleFileContentConvertor.java index df3f8b1..aa75a25 100644 --- a/metrics/metrics-extension/metrics-write-file/src/main/java/io/servicecomb/metrics/extension/writefile/SimpleFileContentConvertor.java +++ b/metrics/metrics-extension/metrics-write-file/src/main/java/io/servicecomb/metrics/extension/writefile/SimpleFileContentConvertor.java @@ -23,13 +23,10 @@ import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; -import org.springframework.stereotype.Component; - import com.netflix.config.DynamicPropertyFactory; import io.servicecomb.metrics.common.RegistryMetric; -@Component public class SimpleFileContentConvertor implements FileContentConvertor { private static final String METRICS_ROUND_PLACES = "servicecomb.metrics.round_places"; @@ -54,7 +51,7 @@ public class SimpleFileContentConvertor implements FileContentConvertor { } private double round(double value, int places) { - if (!Double.isNaN(value) && !Double.isInfinite(value)) { + if (!Double.isNaN(value)) { BigDecimal decimal = new BigDecimal(value); return decimal.setScale(places, RoundingMode.HALF_UP).doubleValue(); } else { diff --git a/metrics/metrics-extension/metrics-write-file/src/main/java/io/servicecomb/metrics/extension/writefile/SimpleFileContentFormatter.java b/metrics/metrics-extension/metrics-write-file/src/main/java/io/servicecomb/metrics/extension/writefile/SimpleFileContentFormatter.java index cc12964..c3fac05 100644 --- a/metrics/metrics-extension/metrics-write-file/src/main/java/io/servicecomb/metrics/extension/writefile/SimpleFileContentFormatter.java +++ b/metrics/metrics-extension/metrics-write-file/src/main/java/io/servicecomb/metrics/extension/writefile/SimpleFileContentFormatter.java @@ -24,39 +24,17 @@ import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.util.StringUtils; import com.fasterxml.jackson.core.JsonProcessingException; -import io.servicecomb.foundation.common.net.NetUtils; import io.servicecomb.foundation.common.utils.JsonUtils; -import io.servicecomb.serviceregistry.RegistryUtils; -import io.servicecomb.serviceregistry.api.registry.Microservice; -@Component public class SimpleFileContentFormatter implements FileContentFormatter { private static final Logger logger = LoggerFactory.getLogger(SimpleFileContentFormatter.class); private final String applicationName; - private String hostName; - - @Autowired - public SimpleFileContentFormatter() { - hostName = NetUtils.getHostName(); - if (StringUtils.isEmpty(hostName)) { - hostName = NetUtils.getHostAddress(); - } - - //may any problem ? - if (RegistryUtils.getServiceRegistry() == null) { - RegistryUtils.init(); - } - Microservice microservice = RegistryUtils.getMicroservice(); - applicationName = microservice.getAppId() + "." + microservice.getServiceName(); - } + private final String hostName; public SimpleFileContentFormatter(String hostName, String applicationName) { this.hostName = hostName; @@ -68,15 +46,16 @@ public class SimpleFileContentFormatter implements FileContentFormatter { return input.entrySet().stream() .collect(Collectors.toMap(Entry::getKey, entry -> { try { - return JsonUtils - .writeValueAsString(new OutputJsonObject(applicationName, hostName, entry.getKey(), entry.getValue())); + return JsonUtils.writeValueAsString( + new OutputJsonObject(applicationName, hostName, entry.getKey(), entry.getValue())); } catch (JsonProcessingException e) { - logger.error("error convert metrics data to json convert", e); + logger.error("error format metrics data", e); return ""; } })); } + class OutputJsonObject { private String plugin_id; diff --git a/metrics/metrics-extension/metrics-write-file/src/main/java/io/servicecomb/metrics/extension/writefile/WriteFileInitializer.java b/metrics/metrics-extension/metrics-write-file/src/main/java/io/servicecomb/metrics/extension/writefile/WriteFileInitializer.java index f52dc30..d3d6732 100644 --- a/metrics/metrics-extension/metrics-write-file/src/main/java/io/servicecomb/metrics/extension/writefile/WriteFileInitializer.java +++ b/metrics/metrics-extension/metrics-write-file/src/main/java/io/servicecomb/metrics/extension/writefile/WriteFileInitializer.java @@ -22,11 +22,13 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS; import java.util.Map; import java.util.concurrent.Executors; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.netflix.config.DynamicPropertyFactory; +import io.servicecomb.foundation.common.net.NetUtils; import io.servicecomb.metrics.common.RegistryMetric; import io.servicecomb.metrics.core.publish.DataSource; import io.servicecomb.metrics.extension.writefile.config.MetricsFileWriter; @@ -40,42 +42,32 @@ public class WriteFileInitializer { private final int metricPoll; - private final FileContentConvertor convertor; + private FileContentConvertor convertor; - private final FileContentFormatter formatter; + private FileContentFormatter formatter; private final DataSource dataSource; private final MetricsFileWriter fileWriter; - private final String filePrefix; + private String filePrefix; + + private String hostName; @Autowired - public WriteFileInitializer(MetricsFileWriter fileWriter, FileContentConvertor convertor, - FileContentFormatter formatter, DataSource dataSource) { + public WriteFileInitializer(MetricsFileWriter fileWriter, DataSource dataSource) { metricPoll = DynamicPropertyFactory.getInstance().getIntProperty(METRICS_WINDOW_TIME, 5000).get(); this.fileWriter = fileWriter; - this.convertor = convertor; - this.formatter = formatter; this.dataSource = dataSource; - //may any problem ? - if (RegistryUtils.getServiceRegistry() == null) { - RegistryUtils.init(); - } - Microservice microservice = RegistryUtils.getMicroservice(); - this.filePrefix = microservice.getAppId() + "." + microservice.getServiceName() + "."; - this.init(); } - public WriteFileInitializer(MetricsFileWriter fileWriter, FileContentConvertor convertor, - FileContentFormatter formatter, DataSource dataSource, String filePrefix) { + public WriteFileInitializer(MetricsFileWriter fileWriter, DataSource dataSource, String hostName, String filePrefix) { metricPoll = DynamicPropertyFactory.getInstance().getIntProperty(METRICS_WINDOW_TIME, 5000).get(); this.fileWriter = fileWriter; - this.convertor = convertor; - this.formatter = formatter; this.dataSource = dataSource; + this.hostName = hostName; this.filePrefix = filePrefix; } @@ -86,12 +78,33 @@ public class WriteFileInitializer { } public void run() { - RegistryMetric registryMetric = dataSource.getRegistryMetric(); - Map<String, String> convertedMetrics = convertor.convert(registryMetric); - Map<String, String> formattedMetrics = formatter.format(convertedMetrics); - - for (String metricName : formattedMetrics.keySet()) { - fileWriter.write(metricName, filePrefix, formattedMetrics.get(metricName)); + //wait RegistryUtils init completed + if (RegistryUtils.getServiceRegistry() != null) { + if (StringUtils.isEmpty(filePrefix)) { + Microservice microservice = RegistryUtils.getMicroservice(); + filePrefix = microservice.getAppId() + "." + microservice.getServiceName(); + } + if (StringUtils.isEmpty(hostName)) { + hostName = NetUtils.getHostName(); + if (StringUtils.isEmpty(hostName)) { + hostName = NetUtils.getHostAddress(); + } + } + + if (convertor == null) { + convertor = new SimpleFileContentConvertor(); + } + if (formatter == null) { + formatter = new SimpleFileContentFormatter(hostName, filePrefix); + } + + RegistryMetric registryMetric = dataSource.getRegistryMetric(); + Map<String, String> convertedMetrics = convertor.convert(registryMetric); + Map<String, String> formattedMetrics = formatter.format(convertedMetrics); + + for (String metricName : formattedMetrics.keySet()) { + fileWriter.write(metricName, filePrefix, formattedMetrics.get(metricName)); + } } } } diff --git a/metrics/metrics-extension/metrics-write-file/src/test/java/TestWriteFile.java b/metrics/metrics-extension/metrics-write-file/src/test/java/TestWriteFile.java index 0240868..37cf8b2 100644 --- a/metrics/metrics-extension/metrics-write-file/src/test/java/TestWriteFile.java +++ b/metrics/metrics-extension/metrics-write-file/src/test/java/TestWriteFile.java @@ -16,7 +16,9 @@ */ import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.Set; import org.junit.Assert; import org.junit.Test; @@ -28,20 +30,102 @@ import io.servicecomb.metrics.common.RegistryMetric; import io.servicecomb.metrics.common.SystemMetric; import io.servicecomb.metrics.common.TimerMetric; import io.servicecomb.metrics.core.publish.DataSource; -import io.servicecomb.metrics.extension.writefile.SimpleFileContentConvertor; -import io.servicecomb.metrics.extension.writefile.SimpleFileContentFormatter; import io.servicecomb.metrics.extension.writefile.WriteFileInitializer; import io.servicecomb.metrics.extension.writefile.config.MetricsFileWriter; +import io.servicecomb.serviceregistry.Features; +import io.servicecomb.serviceregistry.RegistryUtils; +import io.servicecomb.serviceregistry.ServiceRegistry; +import io.servicecomb.serviceregistry.api.registry.Microservice; +import io.servicecomb.serviceregistry.api.registry.MicroserviceInstance; +import io.servicecomb.serviceregistry.cache.InstanceCacheManager; +import io.servicecomb.serviceregistry.client.ServiceRegistryClient; +import io.servicecomb.serviceregistry.consumer.AppManager; +import mockit.Expectations; public class TestWriteFile { @Test public void test() { - StringBuilder builder = new StringBuilder(); + new Expectations(RegistryUtils.class) { + { + RegistryUtils.getServiceRegistry(); + result = new ServiceRegistry() { + @Override + public void init() { + + } + + @Override + public void run() { + + } + + @Override + public void destroy() { + + } + + @Override + public Set<String> getCombinedMicroserviceNames() { + return null; + } + + @Override + public Microservice getMicroservice() { + return null; + } + + @Override + public MicroserviceInstance getMicroserviceInstance() { + return null; + } + + @Override + public ServiceRegistryClient getServiceRegistryClient() { + return null; + } + + @Override + public AppManager getAppManager() { + return null; + } + + @Override + public InstanceCacheManager getInstanceCacheManager() { + return null; + } + + @Override + public List<MicroserviceInstance> findServiceInstance(String appId, String microserviceName, + String microserviceVersionRule) { + return null; + } + + @Override + public boolean updateMicroserviceProperties(Map<String, String> properties) { + return false; + } + + @Override + public boolean updateInstanceProperties(Map<String, String> instanceProperties) { + return false; + } + + @Override + public Microservice getRemoteMicroservice(String microserviceId) { + return null; + } + + @Override + public Features getFeatures() { + return null; + } + }; + } + }; - SimpleFileContentFormatter formatter = new SimpleFileContentFormatter("localhost", "appId.serviceName"); - SimpleFileContentConvertor convertor = new SimpleFileContentConvertor(); + StringBuilder builder = new StringBuilder(); MetricsFileWriter writer = (loggerName, filePrefix, content) -> builder.append(loggerName).append(filePrefix).append(content); @@ -61,8 +145,8 @@ public class TestWriteFile { DataSource dataSource = Mockito.mock(DataSource.class); Mockito.when(dataSource.getRegistryMetric()).thenReturn(metric); - WriteFileInitializer writeFileInitializer = new WriteFileInitializer(writer, convertor, formatter, dataSource, - "appId.serviceName"); + WriteFileInitializer writeFileInitializer = new WriteFileInitializer(writer, dataSource, + "localhost", "appId.serviceName"); writeFileInitializer.run(); diff --git a/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/pom.xml b/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/pom.xml index fdb5ab7..bc6e7ec 100644 --- a/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/pom.xml +++ b/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/pom.xml @@ -29,6 +29,9 @@ <artifactId>metrics-write-file-log4j-springboot</artifactId> <!--need exclusion log4j-over-slf4j--> + <!--spring boot starter included log4j-over-slf4j,this log bridge not implement the full interface for log4j, + excluded the bridge jar let all slf4j calls go directly to log4j instead of the bridge. + more info can be found here : https://www.slf4j.org/legacy.html#log4j-over-slf4j --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> @@ -68,19 +71,11 @@ <artifactId>metrics-write-file-common</artifactId> </dependency> - <!--metrics dependency--> - <dependency> - <groupId>io.servicecomb</groupId> - <artifactId>metrics-write-file-config</artifactId> - </dependency> + <!--metrics write file dependency--> <dependency> <groupId>io.servicecomb</groupId> <artifactId>metrics-write-file-config-log4j</artifactId> </dependency> - <dependency> - <groupId>io.servicecomb</groupId> - <artifactId>metrics-write-file</artifactId> - </dependency> </dependencies> <build> diff --git a/samples/metrics-write-file-sample/metrics-write-file-log4j/pom.xml b/samples/metrics-write-file-sample/metrics-write-file-log4j/pom.xml index acb6b02..7c69871 100644 --- a/samples/metrics-write-file-sample/metrics-write-file-log4j/pom.xml +++ b/samples/metrics-write-file-sample/metrics-write-file-log4j/pom.xml @@ -63,19 +63,11 @@ <artifactId>metrics-write-file-common</artifactId> </dependency> - <!--metrics dependency--> - <dependency> - <groupId>io.servicecomb</groupId> - <artifactId>metrics-write-file-config</artifactId> - </dependency> + <!--metrics write file dependency--> <dependency> <groupId>io.servicecomb</groupId> <artifactId>metrics-write-file-config-log4j</artifactId> </dependency> - <dependency> - <groupId>io.servicecomb</groupId> - <artifactId>metrics-write-file</artifactId> - </dependency> </dependencies> diff --git a/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/pom.xml b/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/pom.xml index 2e49818..bfa70d6 100644 --- a/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/pom.xml +++ b/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/pom.xml @@ -61,19 +61,11 @@ <artifactId>metrics-write-file-common</artifactId> </dependency> - <!--metrics dependency--> - <dependency> - <groupId>io.servicecomb</groupId> - <artifactId>metrics-write-file-config</artifactId> - </dependency> + <!--metrics write file dependency--> <dependency> <groupId>io.servicecomb</groupId> <artifactId>metrics-write-file-config-log4j2</artifactId> </dependency> - <dependency> - <groupId>io.servicecomb</groupId> - <artifactId>metrics-write-file</artifactId> - </dependency> </dependencies> <build> diff --git a/samples/metrics-write-file-sample/metrics-write-file-log4j2/pom.xml b/samples/metrics-write-file-sample/metrics-write-file-log4j2/pom.xml index 3d9e83f..436155d 100644 --- a/samples/metrics-write-file-sample/metrics-write-file-log4j2/pom.xml +++ b/samples/metrics-write-file-sample/metrics-write-file-log4j2/pom.xml @@ -63,19 +63,11 @@ <artifactId>metrics-write-file-common</artifactId> </dependency> - <!--metrics dependency--> - <dependency> - <groupId>io.servicecomb</groupId> - <artifactId>metrics-write-file-config</artifactId> - </dependency> + <!--metrics write file dependency--> <dependency> <groupId>io.servicecomb</groupId> <artifactId>metrics-write-file-config-log4j2</artifactId> </dependency> - <dependency> - <groupId>io.servicecomb</groupId> - <artifactId>metrics-write-file</artifactId> - </dependency> </dependencies> -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
