You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/01/09 06:27:14 UTC
[incubator-servicecomb-java-chassis] 03/13: SCB-85 add log4j2
implement
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 a7a33d8d27c27fee0d12a1bf4ef6bf29950ad35e
Author: zhengyangyong <ya...@huawei.com>
AuthorDate: Thu Dec 28 11:25:16 2017 +0800
SCB-85 add log4j2 implement
Signed-off-by: zhengyangyong <ya...@huawei.com>
---
.../metrics-performance-test/pom.xml | 28 ++++++++++++
.../src/main/resources/microservice.yaml | 15 +++++++
.../config/log4j2/Log4j2FileWriterManager.java | 51 ++++++++++++----------
.../sample/writefile/config/FileWriterManager.java | 2 +-
...entConvertor.java => FileContentConvertor.java} | 2 +-
...entFormatter.java => FileContentFormatter.java} | 2 +-
.../{MetricsFileOutput.java => FileWriter.java} | 4 +-
...vertor.java => SimpleFileContentConvertor.java} | 9 ++--
...matter.java => SimpleFileContentFormatter.java} | 11 ++---
...rInitializer.java => WriteFileInitializer.java} | 12 ++---
metrics/metrics-sample/pom.xml | 10 +++++
samples/bmi/calculator/pom.xml | 20 +++++++++
.../src/main/resources/microservice.yaml | 7 ++-
13 files changed, 129 insertions(+), 44 deletions(-)
diff --git a/metrics/metrics-sample/metrics-performance-test/pom.xml b/metrics/metrics-sample/metrics-performance-test/pom.xml
index f37e1fe..e12b18c 100644
--- a/metrics/metrics-sample/metrics-performance-test/pom.xml
+++ b/metrics/metrics-sample/metrics-performance-test/pom.xml
@@ -32,8 +32,19 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-logging</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-log4j2</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>io.servicecomb</groupId>
<artifactId>spring-boot-starter-provider</artifactId>
</dependency>
@@ -42,6 +53,23 @@
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>io.servicecomb</groupId>
+ <artifactId>metrics-write-file-config</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.servicecomb</groupId>
+ <artifactId>metrics-write-file-config-log4j2</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.servicecomb</groupId>
+ <artifactId>metrics-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.servicecomb</groupId>
+ <artifactId>metrics-write-file</artifactId>
+ </dependency>
</dependencies>
<build>
diff --git a/metrics/metrics-sample/metrics-performance-test/src/main/resources/microservice.yaml b/metrics/metrics-sample/metrics-performance-test/src/main/resources/microservice.yaml
index b5edcd1..3a10562 100644
--- a/metrics/metrics-sample/metrics-performance-test/src/main/resources/microservice.yaml
+++ b/metrics/metrics-sample/metrics-performance-test/src/main/resources/microservice.yaml
@@ -30,6 +30,21 @@ cse:
servicecomb:
metrics:
+ #polltime,unit is second
+ polltime: 5
+ #metrics double value round places,default value is 1
+ round_places: 1
+ file:
+ enabled: false
+ #metrics file name prefix setting,default value is "metrics"
+ name_prefix: bmi.calculator
+
+ root_path: /sample/bmi/calculator/target/metric
+ rolling:
+ max_file_count: 10
+ max_file_size : 10MB
+
+ #Version 0.5.0+ config
#Support Muti-WindowTime (MILLISECONDS) like 10000,60000 (10s and 60s), Use WindowTimeIndex make selection,start from 0
#Default value is single WindowTime : 5000 (5 second)
#Will direct set value of "servo.pollers"
diff --git a/metrics/metrics-sample/metrics-write-file-config-log4j2/src/main/java/io/servicecomb/metrics/sample/writefile/config/log4j2/Log4j2FileWriterManager.java b/metrics/metrics-sample/metrics-write-file-config-log4j2/src/main/java/io/servicecomb/metrics/sample/writefile/config/log4j2/Log4j2FileWriterManager.java
index 6908e25..4c1eb07 100644
--- a/metrics/metrics-sample/metrics-write-file-config-log4j2/src/main/java/io/servicecomb/metrics/sample/writefile/config/log4j2/Log4j2FileWriterManager.java
+++ b/metrics/metrics-sample/metrics-write-file-config-log4j2/src/main/java/io/servicecomb/metrics/sample/writefile/config/log4j2/Log4j2FileWriterManager.java
@@ -38,11 +38,15 @@ import io.servicecomb.metrics.sample.writefile.config.FileWriterManager;
@Component
public class Log4j2FileWriterManager implements FileWriterManager {
- private static final String METRICS_FILE_ROLLING_MAXFILECOUNT = "servicecomb.metrics.file.rolling.max_file_count";
+ private static final String METRICS_FILE_ROLLING_MAX_FILE_COUNT = "servicecomb.metrics.file.rolling.max_file_count";
- private static final String METRICS_FILE_ROLLING_MAXFILESIZE = "servicecomb.metrics.file.rolling.max_file_size";
+ private static final String METRICS_FILE_ROLLING_MAX_FILE_SIZE = "servicecomb.metrics.file.rolling.max_file_size";
- private static final String METRICS_FILE_ROOTPATH = "servicecomb.metrics.file.root_path";
+ private static final String METRICS_FILE_ROOT_PATH = "servicecomb.metrics.file.root_path";
+
+ private final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
+
+ private final Configuration config = ctx.getConfiguration();
private final Map<String, RollingFileAppender> fileAppenders = new ConcurrentHashMap<>();
@@ -53,30 +57,31 @@ public class Log4j2FileWriterManager implements FileWriterManager {
private final String rootPath;
public Log4j2FileWriterManager() {
- maxFileCount = DynamicPropertyFactory.getInstance().getIntProperty(METRICS_FILE_ROLLING_MAXFILECOUNT, 10).get();
- maxFileSize = DynamicPropertyFactory.getInstance().getStringProperty(METRICS_FILE_ROLLING_MAXFILESIZE, "10MB").get();
- rootPath = DynamicPropertyFactory.getInstance().getStringProperty(METRICS_FILE_ROOTPATH, "target").get();
+ maxFileCount = DynamicPropertyFactory.getInstance().getIntProperty(METRICS_FILE_ROLLING_MAX_FILE_COUNT, 10).get();
+ maxFileSize = DynamicPropertyFactory.getInstance().getStringProperty(METRICS_FILE_ROLLING_MAX_FILE_SIZE, "10MB")
+ .get();
+ rootPath = DynamicPropertyFactory.getInstance().getStringProperty(METRICS_FILE_ROOT_PATH, "target").get();
}
@Override
- public void write(String loggerName, String filePerfix, String content) {
- RollingFileAppender appender = fileAppenders.computeIfAbsent(loggerName, f -> initLogger(loggerName, filePerfix));
- appender.append(Log4jLogEvent.newBuilder().setMessage(new SimpleMessage(content)).build());
+ public void write(String loggerName, String filePrefix, String content) {
+ RollingFileAppender logger = fileAppenders.computeIfAbsent(loggerName, f -> initLogger(loggerName, filePrefix));
+ logger.append(Log4jLogEvent.newBuilder().setMessage(new SimpleMessage(content)).build());
}
- private RollingFileAppender initLogger(String loggerName, String filePerfix) {
- String fileName = Paths.get(rootPath, filePerfix + loggerName + ".dat").toString();
- String filePattern = Paths.get(rootPath, filePerfix + loggerName + "-%i.dat").toString();
-
- LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
- Configuration config = ctx.getConfiguration();
- return RollingFileAppender.newBuilder().withName(loggerName)
- .withLayout(PatternLayout.newBuilder().withPattern(PatternLayout.DEFAULT_CONVERSION_PATTERN).build())
- .withFileName(fileName)
- .withFilePattern(filePattern)
- .withPolicy(SizeBasedTriggeringPolicy.createPolicy(maxFileSize))
- .withStrategy(
- DefaultRolloverStrategy.createStrategy(String.valueOf(maxFileCount), null, null, null, null, false, config))
- .build();
+ 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();
+
+ PatternLayout layout = PatternLayout.newBuilder().withPattern(PatternLayout.DEFAULT_CONVERSION_PATTERN).build();
+ SizeBasedTriggeringPolicy policy = SizeBasedTriggeringPolicy.createPolicy(maxFileSize);
+ DefaultRolloverStrategy strategy = DefaultRolloverStrategy.createStrategy(String.valueOf(maxFileCount), null, null,
+ null, null, false, config);
+
+ //TODO:in version 2.8 + , log4j2 request use RollingFileAppender.newBuilder,but throw No such static method exception
+ RollingFileAppender appender = RollingFileAppender
+ .createAppender(fileName, filePattern, "true", loggerName, "true", null,
+ "true", policy, strategy, layout, null, null, null, null, config);
+ return appender;
}
}
diff --git a/metrics/metrics-sample/metrics-write-file-config/src/main/java/io/servicecomb/metrics/sample/writefile/config/FileWriterManager.java b/metrics/metrics-sample/metrics-write-file-config/src/main/java/io/servicecomb/metrics/sample/writefile/config/FileWriterManager.java
index 13d2ce2..3fde5f9 100644
--- a/metrics/metrics-sample/metrics-write-file-config/src/main/java/io/servicecomb/metrics/sample/writefile/config/FileWriterManager.java
+++ b/metrics/metrics-sample/metrics-write-file-config/src/main/java/io/servicecomb/metrics/sample/writefile/config/FileWriterManager.java
@@ -18,5 +18,5 @@
package io.servicecomb.metrics.sample.writefile.config;
public interface FileWriterManager {
- void write(String loggerName, String filePerfix, String content);
+ void write(String loggerName, String filePrefix, String content);
}
diff --git a/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/MetricsContentConvertor.java b/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/FileContentConvertor.java
similarity index 95%
rename from metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/MetricsContentConvertor.java
rename to metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/FileContentConvertor.java
index 8496d64..6619327 100644
--- a/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/MetricsContentConvertor.java
+++ b/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/FileContentConvertor.java
@@ -22,6 +22,6 @@ import java.util.Map;
import io.servicecomb.metrics.common.RegistryMetric;
//convert metrics to output content
-public interface MetricsContentConvertor {
+public interface FileContentConvertor {
Map<String, String> convert(RegistryMetric registryMetric);
}
diff --git a/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/MetricsContentFormatter.java b/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/FileContentFormatter.java
similarity index 95%
rename from metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/MetricsContentFormatter.java
rename to metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/FileContentFormatter.java
index db1fb82..f06c3c8 100644
--- a/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/MetricsContentFormatter.java
+++ b/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/FileContentFormatter.java
@@ -19,6 +19,6 @@ package io.servicecomb.metrics.sample.writefile;
import java.util.Map;
-public interface MetricsContentFormatter {
+public interface FileContentFormatter {
Map<String, String> format(Map<String, String> input);
}
diff --git a/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/MetricsFileOutput.java b/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/FileWriter.java
similarity index 94%
rename from metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/MetricsFileOutput.java
rename to metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/FileWriter.java
index f77a1d1..b3c47cd 100644
--- a/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/MetricsFileOutput.java
+++ b/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/FileWriter.java
@@ -27,14 +27,14 @@ import io.servicecomb.serviceregistry.RegistryUtils;
import io.servicecomb.serviceregistry.api.registry.Microservice;
@Component
-public class MetricsFileOutput {
+public class FileWriter {
private final FileWriterManager fileWriterManager;
private final String filePrefix;
@Autowired
- public MetricsFileOutput(FileWriterManager fileWriterManager) {
+ public FileWriter(FileWriterManager fileWriterManager) {
this.fileWriterManager = fileWriterManager;
Microservice microservice = RegistryUtils.getMicroservice();
filePrefix = microservice.getAppId() + "." + microservice.getServiceName() + ".";
diff --git a/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/SimpleMetricsContentConvertor.java b/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/SimpleFileContentConvertor.java
similarity index 82%
rename from metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/SimpleMetricsContentConvertor.java
rename to metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/SimpleFileContentConvertor.java
index 60bf180..b4eee11 100644
--- a/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/SimpleMetricsContentConvertor.java
+++ b/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/SimpleFileContentConvertor.java
@@ -19,19 +19,20 @@ package io.servicecomb.metrics.sample.writefile;
import java.util.HashMap;
import java.util.Map;
+import java.util.Map.Entry;
import org.springframework.stereotype.Component;
import io.servicecomb.metrics.common.RegistryMetric;
@Component
-public class SimpleMetricsContentConvertor implements MetricsContentConvertor {
+public class SimpleFileContentConvertor implements FileContentConvertor {
@Override
public Map<String, String> convert(RegistryMetric registryMetric) {
Map<String, String> pickedMetrics = new HashMap<>();
-
- //TODO:draw all metrics from RegistryMetric
-
+ for (Entry<String,Number> metric : registryMetric.toMap().entrySet()) {
+ pickedMetrics.put(metric.getKey(),String.valueOf(metric.getValue()));
+ }
return pickedMetrics;
}
}
diff --git a/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/SimpleMetricsContentFormatter.java b/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/SimpleFileContentFormatter.java
similarity index 88%
rename from metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/SimpleMetricsContentFormatter.java
rename to metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/SimpleFileContentFormatter.java
index 1cdc203..809a2fb 100644
--- a/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/SimpleMetricsContentFormatter.java
+++ b/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/SimpleFileContentFormatter.java
@@ -33,24 +33,25 @@ 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 SimpleMetricsContentFormatter implements MetricsContentFormatter {
- private static final Logger logger = LoggerFactory.getLogger(SimpleMetricsContentFormatter.class);
+public class SimpleFileContentFormatter implements FileContentFormatter {
+ private static final Logger logger = LoggerFactory.getLogger(SimpleFileContentFormatter.class);
private final String applicationName;
private String hostName;
@Autowired
- public SimpleMetricsContentFormatter() {
+ public SimpleFileContentFormatter() {
hostName = NetUtils.getHostName();
if (StringUtils.isEmpty(hostName)) {
hostName = NetUtils.getHostAddress();
}
- applicationName =
- RegistryUtils.getMicroservice().getAppId() + "." + RegistryUtils.getMicroservice().getServiceName();
+ Microservice microservice = RegistryUtils.getMicroservice();
+ applicationName = microservice.getAppId() + "." + microservice.getServiceName();
}
@Override
diff --git a/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/MetricsObserverInitializer.java b/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/WriteFileInitializer.java
similarity index 85%
rename from metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/MetricsObserverInitializer.java
rename to metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/WriteFileInitializer.java
index 051f2ee..a01a5d5 100644
--- a/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/MetricsObserverInitializer.java
+++ b/metrics/metrics-sample/metrics-write-file/src/main/java/io/servicecomb/metrics/sample/writefile/WriteFileInitializer.java
@@ -31,23 +31,23 @@ import io.servicecomb.metrics.common.RegistryMetric;
import io.servicecomb.metrics.core.publish.DataSource;
@Component
-public class MetricsObserverInitializer {
+public class WriteFileInitializer {
private static final String METRICS_WINDOW_TIME = "servicecomb.metrics.window_time";
private final int metricPoll;
- private final MetricsFileOutput fileOutput;
+ private final FileWriter fileOutput;
- private final MetricsContentConvertor convertor;
+ private final FileContentConvertor convertor;
- private final MetricsContentFormatter formatter;
+ private final FileContentFormatter formatter;
private final DataSource dataSource;
@Autowired
- public MetricsObserverInitializer(MetricsFileOutput fileOutput, MetricsContentConvertor convertor,
- MetricsContentFormatter formatter, DataSource dataSource) {
+ public WriteFileInitializer(FileWriter fileOutput, FileContentConvertor convertor,
+ FileContentFormatter formatter, DataSource dataSource) {
metricPoll = DynamicPropertyFactory.getInstance().getIntProperty(METRICS_WINDOW_TIME, 5000).get();
this.fileOutput = fileOutput;
this.convertor = convertor;
diff --git a/metrics/metrics-sample/pom.xml b/metrics/metrics-sample/pom.xml
index 542b6d4..845a570 100644
--- a/metrics/metrics-sample/pom.xml
+++ b/metrics/metrics-sample/pom.xml
@@ -43,6 +43,16 @@
<artifactId>metrics-write-file-config</artifactId>
<version>0.6.0-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>io.servicecomb</groupId>
+ <artifactId>metrics-write-file-config-log4j2</artifactId>
+ <version>0.6.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>io.servicecomb</groupId>
+ <artifactId>metrics-write-file</artifactId>
+ <version>0.6.0-SNAPSHOT</version>
+ </dependency>
</dependencies>
</dependencyManagement>
diff --git a/samples/bmi/calculator/pom.xml b/samples/bmi/calculator/pom.xml
index ffd84f1..4378d46 100644
--- a/samples/bmi/calculator/pom.xml
+++ b/samples/bmi/calculator/pom.xml
@@ -61,6 +61,26 @@
<groupId>io.servicecomb</groupId>
<artifactId>handler-tracing-zipkin</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>io.servicecomb</groupId>
+ <artifactId>metrics-write-file-config</artifactId>
+ <version>0.6.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>io.servicecomb</groupId>
+ <artifactId>metrics-write-file-config-log4j2</artifactId>
+ <version>0.6.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>io.servicecomb</groupId>
+ <artifactId>metrics-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.servicecomb</groupId>
+ <artifactId>metrics-write-file</artifactId>
+ <version>0.6.0-SNAPSHOT</version>
+ </dependency>
</dependencies>
<build>
diff --git a/samples/bmi/calculator/src/main/resources/microservice.yaml b/samples/bmi/calculator/src/main/resources/microservice.yaml
index d27d2a7..e568b3d 100644
--- a/samples/bmi/calculator/src/main/resources/microservice.yaml
+++ b/samples/bmi/calculator/src/main/resources/microservice.yaml
@@ -40,10 +40,15 @@ servicecomb:
#metrics double value round places,default value is 1
round_places: 1
file:
- enabled: true
+ enabled: false
#metrics file name prefix setting,default value is "metrics"
name_prefix: bmi.calculator
+ root_path: ./samples/bmi/calculator/target/metric/
+ rolling:
+ max_file_count: 10
+ max_file_size : 10MB
+
#Version 0.5.0+ config
#Support Muti-WindowTime (MILLISECONDS) like 10000,60000 (10s and 60s), Use WindowTimeIndex make selection,start from 0
#Default value is single WindowTime : 5000 (5 second)
--
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.