You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by wu...@apache.org on 2018/04/08 16:40:32 UTC

[incubator-servicecomb-java-chassis] branch master updated: SCB-462 cloud eye publisher switch to new mechanism

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

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


The following commit(s) were added to refs/heads/master by this push:
     new e029f14  SCB-462 cloud eye publisher switch to new mechanism
e029f14 is described below

commit e029f14fcccf2a55b84a2ed0873035bd0a4d4ec8
Author: wujimin <wu...@huawei.com>
AuthorDate: Wed Apr 4 16:24:23 2018 +0800

    SCB-462 cloud eye publisher switch to new mechanism
---
 .../metrics-write-file-log4j-springboot/pom.xml    |  88 ----------------
 .../samples/mwf/Log4JMetricsFileWriter.java        |  78 --------------
 .../samples/mwf/ServiceApplication.java            |  30 ------
 .../servicecomb/samples/mwf/SimpleService.java     |  35 -------
 .../src/main/resources/microservice.yaml           |  46 --------
 .../metrics-write-file-log4j2-springboot/pom.xml   |  82 ---------------
 .../samples/mwf/Log4J2MetricsFileWriter.java       | 104 ------------------
 .../servicecomb/samples/mwf/SimpleService.java     |  35 -------
 .../src/main/resources/microservice.yaml           |  46 --------
 .../metrics-write-file/pom.xml                     |  32 +++---
 .../samples/mwf/CloudEyeFilePublisher.java         | 116 +++++++++++++++++++++
 .../samples/mwf/CloudEyeMetricModel.java           |  77 ++++++++++++++
 .../servicecomb/samples/mwf/CloudEyeModel.java}    |  27 +++--
 .../samples/mwf/FileContentConvertor.java          |  25 -----
 .../samples/mwf/FileContentFormatter.java          |  24 -----
 .../samples/mwf/MetricsBootListener.java           |  40 -------
 .../servicecomb/samples/mwf/MetricsFileWriter.java |  22 ----
 .../samples/mwf/SimpleFileContentConvertor.java    |  86 ---------------
 .../samples/mwf/SimpleFileContentFormatter.java    |  86 ---------------
 .../samples/mwf/WriteFileInitializer.java          |  94 -----------------
 ...rvicecomb.foundation.metrics.MetricsInitializer |  18 ++++
 .../src/main/resources/sample-log4j2.xml           |  48 +++++++++
 .../src/main/resources/sample-logback.xml          |  52 +++++++++
 samples/metrics-write-file-sample/pom.xml          |   7 --
 24 files changed, 343 insertions(+), 955 deletions(-)

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
deleted file mode 100644
index 806d3b4..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/pom.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <parent>
-    <artifactId>metrics-write-file-sample</artifactId>
-    <groupId>org.apache.servicecomb.samples</groupId>
-    <version>1.0.0-m2-SNAPSHOT</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-
-  <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>
-      <artifactId>spring-boot-starter</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>org.slf4j</groupId>
-          <artifactId>log4j-over-slf4j</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>spring-boot-starter-provider</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>handler-flowcontrol-qps</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>handler-bizkeeper</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>handler-tracing-zipkin</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.hibernate</groupId>
-      <artifactId>hibernate-validator</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.servicecomb.samples</groupId>
-      <artifactId>metrics-write-file</artifactId>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>
\ No newline at end of file
diff --git a/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/src/main/java/org/apache/servicecomb/samples/mwf/Log4JMetricsFileWriter.java b/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/src/main/java/org/apache/servicecomb/samples/mwf/Log4JMetricsFileWriter.java
deleted file mode 100644
index cbe417d..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/src/main/java/org/apache/servicecomb/samples/mwf/Log4JMetricsFileWriter.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.samples.mwf;
-
-import java.nio.file.Paths;
-import java.util.Map;
-
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.log4j.PatternLayout;
-import org.apache.log4j.RollingFileAppender;
-import org.apache.log4j.spi.LoggingEvent;
-import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
-import org.springframework.stereotype.Component;
-
-import com.netflix.config.DynamicPropertyFactory;
-
-@Component
-public class Log4JMetricsFileWriter implements MetricsFileWriter {
-  private static final String METRICS_FILE_ROLLING_MAX_FILE_COUNT = "servicecomb.metrics.file.rolling.max_file_count";
-
-  private static final String METRICS_FILE_ROLLING_MAX_FILE_SIZE = "servicecomb.metrics.file.rolling.max_file_size";
-
-  private static final String METRICS_FILE_ROOT_PATH = "servicecomb.metrics.file.root_path";
-
-
-  private final Map<String, RollingFileAppender> fileAppenders = new ConcurrentHashMapEx<>();
-
-  private final int maxFileCount;
-
-  private final String maxFileSize;
-
-  private final String rootPath;
-
-  public Log4JMetricsFileWriter() {
-    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 filePrefix, String content) {
-    RollingFileAppender logger = fileAppenders.computeIfAbsent(loggerName, f -> initLogger(loggerName, filePrefix));
-    LoggingEvent event = new LoggingEvent(loggerName, Logger.getLogger(loggerName), Level.ALL,
-        content, null);
-    logger.append(event);
-  }
-
-  private RollingFileAppender initLogger(String loggerName, String filePrefix) {
-    String fileName = Paths.get(rootPath, filePrefix + "." + loggerName + ".dat").toString();
-    RollingFileAppender fileAppender = new RollingFileAppender();
-    fileAppender.setName(loggerName);
-    fileAppender.setFile(fileName);
-    fileAppender.setLayout(new PatternLayout("%m%n"));
-    fileAppender.setAppend(true);
-    fileAppender.setMaxFileSize(maxFileSize);
-    fileAppender.setMaxBackupIndex(maxFileCount);
-    fileAppender.activateOptions();
-    return fileAppender;
-  }
-}
diff --git a/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/src/main/java/org/apache/servicecomb/samples/mwf/ServiceApplication.java b/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/src/main/java/org/apache/servicecomb/samples/mwf/ServiceApplication.java
deleted file mode 100644
index 6995e38..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/src/main/java/org/apache/servicecomb/samples/mwf/ServiceApplication.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.samples.mwf;
-
-import org.apache.servicecomb.springboot.starter.provider.EnableServiceComb;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-@EnableServiceComb
-public class ServiceApplication {
-  public static void main(String[] args) {
-    SpringApplication.run(ServiceApplication.class, args);
-  }
-}
diff --git a/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/src/main/java/org/apache/servicecomb/samples/mwf/SimpleService.java b/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/src/main/java/org/apache/servicecomb/samples/mwf/SimpleService.java
deleted file mode 100644
index 094df93..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/src/main/java/org/apache/servicecomb/samples/mwf/SimpleService.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.samples.mwf;
-
-import java.util.UUID;
-
-import org.apache.servicecomb.provider.rest.common.RestSchema;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-//simple service sim
-@RestSchema(schemaId = "demoServiceEndpoint")
-@RequestMapping(path = "/")
-public class SimpleService {
-
-  @GetMapping(path = "/f")
-  public String fun() {
-    return UUID.randomUUID().toString();
-  }
-}
diff --git a/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/src/main/resources/microservice.yaml b/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/src/main/resources/microservice.yaml
deleted file mode 100644
index 748ef4d..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/src/main/resources/microservice.yaml
+++ /dev/null
@@ -1,46 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You under the Apache License, Version 2.0
-## (the "License"); you may not use this file except in compliance with
-## the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing, software
-## distributed under the License is distributed on an "AS IS" BASIS,
-## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-## See the License for the specific language governing permissions and
-## limitations under the License.
-## ---------------------------------------------------------------------------
-
-APPLICATION_ID: mwf
-service_description:
-  name: mwf-log4j2-springboot
-  version: 0.0.1
-cse:
-  service:
-    registry:
-      address: http://127.0.0.1:30100
-  rest:
-    address: 0.0.0.0:8080
-  highway:
-    address: 0.0.0.0:7070
-  handler:
-    chain:
-      Provider:
-        default: bizkeeper-provider
-
-servicecomb:
-  metrics:
-    #metrics double value round places,default value is 1
-    round_places: 1
-    file:
-      root_path: ./samples/metrics-write-file-sample/metrics-write-file-log4j-springboot/target/metric/
-      rolling:
-        max_file_count: 10
-        max_file_size : 10MB
-
-    #output time,milliseconds
-    window_time: 5000
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
deleted file mode 100644
index 282bbbd..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/pom.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <parent>
-    <artifactId>metrics-write-file-sample</artifactId>
-    <groupId>org.apache.servicecomb.samples</groupId>
-    <version>1.0.0-m2-SNAPSHOT</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-
-  <artifactId>metrics-write-file-log4j2-springboot</artifactId>
-  <name>Java Chassis::Metrics::Sample::Metrics::WriteFile::Log4j2</name>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>spring-boot-starter-provider</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>handler-flowcontrol-qps</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>handler-bizkeeper</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>handler-tracing-zipkin</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.hibernate</groupId>
-      <artifactId>hibernate-validator</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-core</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.servicecomb.samples</groupId>
-      <artifactId>metrics-write-file</artifactId>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/src/main/java/org/apache/servicecomb/samples/mwf/Log4J2MetricsFileWriter.java b/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/src/main/java/org/apache/servicecomb/samples/mwf/Log4J2MetricsFileWriter.java
deleted file mode 100644
index 737cc47..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/src/main/java/org/apache/servicecomb/samples/mwf/Log4J2MetricsFileWriter.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.samples.mwf;
-
-import java.nio.file.Paths;
-import java.util.Map;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.appender.RollingFileAppender;
-import org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy;
-import org.apache.logging.log4j.core.appender.rolling.SizeBasedTriggeringPolicy;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.apache.logging.log4j.core.layout.PatternLayout;
-import org.apache.logging.log4j.message.SimpleMessage;
-import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
-import org.springframework.stereotype.Component;
-
-import com.netflix.config.DynamicPropertyFactory;
-
-@Component
-public class Log4J2MetricsFileWriter implements MetricsFileWriter {
-  private static final String METRICS_FILE_ROLLING_MAX_FILE_COUNT = "servicecomb.metrics.file.rolling.max_file_count";
-
-  private static final String METRICS_FILE_ROLLING_MAX_FILE_SIZE = "servicecomb.metrics.file.rolling.max_file_size";
-
-  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 ConcurrentHashMapEx<>();
-
-  private final int maxFileCount;
-
-  private final String maxFileSize;
-
-  private final String rootPath;
-
-  public Log4J2MetricsFileWriter() {
-    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 filePrefix, String content) {
-    RollingFileAppender logger = fileAppenders.computeIfAbsent(loggerName, f -> initLogger(loggerName, filePrefix));
-    logger.append(Log4jLogEvent.newBuilder().setMessage(new SimpleMessage(content)).build());
-  }
-
-  @SuppressWarnings("deprecation")
-  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:use RollingFileAppender.newBuilder throw No such static method exception,will improve later!
-    return RollingFileAppender
-        .createAppender(fileName,
-            filePattern,
-            "true",
-            loggerName,
-            "true",
-            null,
-            "true",
-            policy,
-            strategy,
-            layout,
-            null,
-            null,
-            null,
-            null,
-            config);
-  }
-}
diff --git a/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/src/main/java/org/apache/servicecomb/samples/mwf/SimpleService.java b/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/src/main/java/org/apache/servicecomb/samples/mwf/SimpleService.java
deleted file mode 100644
index 094df93..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/src/main/java/org/apache/servicecomb/samples/mwf/SimpleService.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.samples.mwf;
-
-import java.util.UUID;
-
-import org.apache.servicecomb.provider.rest.common.RestSchema;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-//simple service sim
-@RestSchema(schemaId = "demoServiceEndpoint")
-@RequestMapping(path = "/")
-public class SimpleService {
-
-  @GetMapping(path = "/f")
-  public String fun() {
-    return UUID.randomUUID().toString();
-  }
-}
diff --git a/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/src/main/resources/microservice.yaml b/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/src/main/resources/microservice.yaml
deleted file mode 100644
index e21b21a..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/src/main/resources/microservice.yaml
+++ /dev/null
@@ -1,46 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You under the Apache License, Version 2.0
-## (the "License"); you may not use this file except in compliance with
-## the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing, software
-## distributed under the License is distributed on an "AS IS" BASIS,
-## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-## See the License for the specific language governing permissions and
-## limitations under the License.
-## ---------------------------------------------------------------------------
-
-APPLICATION_ID: mwf
-service_description:
-  name: mwf-log4j-springboot
-  version: 0.0.1
-cse:
-  service:
-    registry:
-      address: http://127.0.0.1:30100
-  rest:
-    address: 0.0.0.0:8080
-  highway:
-    address: 0.0.0.0:7070
-  handler:
-    chain:
-      Provider:
-        default: bizkeeper-provider
-
-servicecomb:
-  metrics:
-    #metrics double value round places,default value is 1
-    round_places: 1
-    file:
-      root_path: ./samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/target/metric/
-      rolling:
-        max_file_count: 10
-        max_file_size : 10MB
-
-    #output time,milliseconds
-    window_time: 5000
diff --git a/samples/metrics-write-file-sample/metrics-write-file/pom.xml b/samples/metrics-write-file-sample/metrics-write-file/pom.xml
index f4951a3..54ff6ee 100644
--- a/samples/metrics-write-file-sample/metrics-write-file/pom.xml
+++ b/samples/metrics-write-file-sample/metrics-write-file/pom.xml
@@ -16,8 +16,7 @@
   ~ limitations under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>metrics-write-file-sample</artifactId>
@@ -35,22 +34,19 @@
       <artifactId>metrics-core</artifactId>
     </dependency>
 
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.jmockit</groupId>
-      <artifactId>jmockit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-core</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
+<!--     <dependency> -->
+<!--       <groupId>org.apache.logging.log4j</groupId> -->
+<!--       <artifactId>log4j-core</artifactId> -->
+<!--     </dependency> -->
+<!--     <dependency> -->
+<!--       <groupId>org.apache.logging.log4j</groupId> -->
+<!--       <artifactId>log4j-slf4j-impl</artifactId> -->
+<!--     </dependency> -->
 
+<!--     <dependency> -->
+<!--       <groupId>ch.qos.logback</groupId> -->
+<!--       <artifactId>logback-classic</artifactId> -->
+<!--     </dependency> -->
 
+  </dependencies>
 </project>
diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/CloudEyeFilePublisher.java b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/CloudEyeFilePublisher.java
new file mode 100644
index 0000000..acda8a6
--- /dev/null
+++ b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/CloudEyeFilePublisher.java
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.samples.mwf;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.servicecomb.foundation.common.net.NetUtils;
+import org.apache.servicecomb.foundation.common.utils.JsonUtils;
+import org.apache.servicecomb.foundation.metrics.MetricsBootstrapConfig;
+import org.apache.servicecomb.foundation.metrics.MetricsInitializer;
+import org.apache.servicecomb.foundation.metrics.PolledEvent;
+import org.apache.servicecomb.serviceregistry.RegistryUtils;
+import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.google.common.eventbus.EventBus;
+import com.google.common.eventbus.Subscribe;
+import com.netflix.config.DynamicPropertyFactory;
+import com.netflix.spectator.api.CompositeRegistry;
+import com.netflix.spectator.api.Measurement;
+import com.netflix.spectator.api.Meter;
+import com.netflix.spectator.api.Tag;
+
+/**
+ * a sample for cloud eye
+ * 
+ * related product only used logback or log4j2
+ * both logback and log4j2 support write to different log file depend on different MDC value
+ * 
+ * reference sample-logback.xml and sample-log4j2.xml
+ */
+public class CloudEyeFilePublisher implements MetricsInitializer {
+  private static final Logger LOGGER = LoggerFactory.getLogger(CloudEyeFilePublisher.class);
+
+  private static final Logger CLOUD_EYE_LOGGER = LoggerFactory.getLogger("cloudEyeLogger");
+
+  private String filePrefix;
+
+  private String hostName;
+
+  @Override
+  public void init(CompositeRegistry globalRegistry, EventBus eventBus, MetricsBootstrapConfig config) {
+    eventBus.register(this);
+
+    Microservice microservice = RegistryUtils.getMicroservice();
+    filePrefix = microservice.getAppId() + "." + microservice.getServiceName();
+
+    hostName = NetUtils.getHostName();
+    if (StringUtils.isEmpty(hostName)) {
+      hostName = NetUtils.getHostAddress();
+    }
+
+    System.setProperty("cloudEye.logDir",
+        DynamicPropertyFactory
+            .getInstance()
+            .getStringProperty("cloudEye.logDir", "logs")
+            .get());
+  }
+
+  @Subscribe
+  public void onPolledEvent(PolledEvent event) {
+    long now = System.currentTimeMillis();
+    for (Meter meter : event.getMeters()) {
+      for (Measurement measurement : meter.measure()) {
+        logMeasurement(measurement, now);
+      }
+    }
+  }
+
+  protected void logMeasurement(Measurement measurement, long now) {
+    String metricKey = generateMetricKey(measurement);
+
+    MDC.put("fileName", filePrefix + "." + metricKey + ".dat");
+
+    CloudEyeMetricModel metricModel = new CloudEyeMetricModel();
+    metricModel.setNode(hostName);
+    metricModel.setTimestamp(now);
+    metricModel.getDynamicValue().put(metricKey, String.valueOf(measurement.value()));
+
+    CloudEyeModel model = new CloudEyeModel();
+    model.setPlugin_id(filePrefix);
+    model.setMetric(metricModel);
+
+    try {
+      CLOUD_EYE_LOGGER.info(JsonUtils.writeValueAsString(model));
+    } catch (JsonProcessingException e) {
+      LOGGER.error("Failed to write cloud eye log.", e);
+    }
+  }
+
+  protected String generateMetricKey(Measurement measurement) {
+    StringBuilder sb = new StringBuilder();
+    sb.append(measurement.id().name());
+    for (Tag tag : measurement.id().tags()) {
+      sb.append('.').append(tag.value());
+    }
+    return sb.toString();
+  }
+}
diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/CloudEyeMetricModel.java b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/CloudEyeMetricModel.java
new file mode 100644
index 0000000..9bf1dab
--- /dev/null
+++ b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/CloudEyeMetricModel.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicecomb.samples.mwf;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+
+public class CloudEyeMetricModel {
+  private String node;
+
+  private String scope_name;
+
+  private long timestamp;
+
+  private String inface_name;
+
+  @JsonAnySetter
+  private Map<String, String> dynamicValue = new HashMap<>();
+
+  public String getNode() {
+    return node;
+  }
+
+  public void setNode(String node) {
+    this.node = node;
+  }
+
+  public String getScope_name() {
+    return scope_name;
+  }
+
+  public void setScope_name(String scope_name) {
+    this.scope_name = scope_name;
+  }
+
+  public long getTimestamp() {
+    return timestamp;
+  }
+
+  public void setTimestamp(long timestamp) {
+    this.timestamp = timestamp;
+  }
+
+  public String getInface_name() {
+    return inface_name;
+  }
+
+  public void setInface_name(String inface_name) {
+    this.inface_name = inface_name;
+  }
+
+  @JsonAnyGetter
+  public Map<String, String> getDynamicValue() {
+    return dynamicValue;
+  }
+
+  public void setDynamicValue(Map<String, String> dynamicValue) {
+    this.dynamicValue = dynamicValue;
+  }
+}
diff --git a/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/src/main/java/org/apache/servicecomb/samples/mwf/ServiceApplication.java b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/CloudEyeModel.java
similarity index 68%
rename from samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/src/main/java/org/apache/servicecomb/samples/mwf/ServiceApplication.java
rename to samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/CloudEyeModel.java
index 6995e38..f91acfc 100644
--- a/samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot/src/main/java/org/apache/servicecomb/samples/mwf/ServiceApplication.java
+++ b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/CloudEyeModel.java
@@ -14,17 +14,26 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.servicecomb.samples.mwf;
 
-import org.apache.servicecomb.springboot.starter.provider.EnableServiceComb;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
+public class CloudEyeModel {
+  private String plugin_id;
+
+  private CloudEyeMetricModel metric;
+
+  public String getPlugin_id() {
+    return plugin_id;
+  }
+
+  public void setPlugin_id(String plugin_id) {
+    this.plugin_id = plugin_id;
+  }
+
+  public CloudEyeMetricModel getMetric() {
+    return metric;
+  }
 
-@SpringBootApplication
-@EnableServiceComb
-public class ServiceApplication {
-  public static void main(String[] args) {
-    SpringApplication.run(ServiceApplication.class, args);
+  public void setMetric(CloudEyeMetricModel metric) {
+    this.metric = metric;
   }
 }
diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/FileContentConvertor.java b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/FileContentConvertor.java
deleted file mode 100644
index dc13f9a..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/FileContentConvertor.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.samples.mwf;
-
-import java.util.Map;
-
-//convert metrics to output content
-public interface FileContentConvertor {
-  Map<String, String> convert(Map<String, Double> registryMetric);
-}
diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/FileContentFormatter.java b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/FileContentFormatter.java
deleted file mode 100644
index f93198a..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/FileContentFormatter.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.samples.mwf;
-
-import java.util.Map;
-
-public interface FileContentFormatter {
-  Map<String, String> format(Map<String, String> input);
-}
diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/MetricsBootListener.java b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/MetricsBootListener.java
deleted file mode 100644
index 3c4d7cc..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/MetricsBootListener.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.samples.mwf;
-
-import org.apache.servicecomb.core.BootListener;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-@Component
-public class MetricsBootListener implements BootListener {
-
-  private final WriteFileInitializer initializer;
-
-  @Autowired
-  public MetricsBootListener(WriteFileInitializer initializer) {
-    this.initializer = initializer;
-  }
-
-  @Override
-  public void onBootEvent(BootEvent event) {
-    if (EventType.BEFORE_REGISTRY.equals(event.getEventType())) {
-      this.initializer.startOutput();
-    }
-  }
-}
diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/MetricsFileWriter.java b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/MetricsFileWriter.java
deleted file mode 100644
index 313d919..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/MetricsFileWriter.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.samples.mwf;
-
-public interface MetricsFileWriter {
-  void write(String loggerName, String filePrefix, String content);
-}
diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/SimpleFileContentConvertor.java b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/SimpleFileContentConvertor.java
deleted file mode 100644
index c3f3d59..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/SimpleFileContentConvertor.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.samples.mwf;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.apache.servicecomb.foundation.metrics.MetricsConst;
-
-import com.netflix.config.DynamicPropertyFactory;
-
-public class SimpleFileContentConvertor implements FileContentConvertor {
-
-  private static final String METRICS_ROUND_PLACES = "servicecomb.metrics.round_places";
-
-  private final int doubleRoundPlaces;
-
-  private final String doubleStringFormatter;
-
-  public SimpleFileContentConvertor() {
-    doubleRoundPlaces = DynamicPropertyFactory.getInstance().getIntProperty(METRICS_ROUND_PLACES, 1).get();
-    doubleStringFormatter = "%." + String.valueOf(doubleRoundPlaces) + "f";
-  }
-
-  @Override
-  public Map<String, String> convert(Map<String, Double> registryMetric) {
-    Map<String, String> pickedMetrics = new HashMap<>();
-    for (Entry<String, Double> metric : registryMetric.entrySet()) {
-      pickedMetrics.put(convertMetricKey(metric.getKey()),
-          String.format(doubleStringFormatter, round(metric.getValue(), doubleRoundPlaces)));
-    }
-    return pickedMetrics;
-  }
-
-  private double round(double value, int places) {
-    if (!Double.isNaN(value)) {
-      BigDecimal decimal = new BigDecimal(value);
-      return decimal.setScale(places, RoundingMode.HALF_UP).doubleValue();
-    }
-    return 0;
-  }
-
-  private String convertMetricKey(String key) {
-    String[] nameAndTag = key.split("\\(");
-    Map<String, String> tags = new HashMap<>();
-    String[] tagAnValues = nameAndTag[1].split("[=,)]");
-    for (int i = 0; i < tagAnValues.length; i += 2) {
-      tags.put(tagAnValues[i], tagAnValues[i + 1]);
-    }
-    if (nameAndTag[0].startsWith(MetricsConst.JVM)) {
-      return "jvm." + tags.get(MetricsConst.TAG_NAME);
-    } else {
-      StringBuilder builder = new StringBuilder();
-      builder.append(tags.get(MetricsConst.TAG_OPERATION));
-      builder.append(".");
-      builder.append(tags.get(MetricsConst.TAG_ROLE).toLowerCase());
-      builder.append(".");
-      builder.append(tags.get(MetricsConst.TAG_STAGE));
-      builder.append(".");
-      builder.append(tags.get(MetricsConst.TAG_STATISTIC));
-      if (tags.containsKey(MetricsConst.TAG_STATUS)) {
-        builder.append(".");
-        builder.append(tags.get(MetricsConst.TAG_STATUS));
-      }
-      return builder.toString();
-    }
-  }
-}
diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/SimpleFileContentFormatter.java b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/SimpleFileContentFormatter.java
deleted file mode 100644
index 91a55e8..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/SimpleFileContentFormatter.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.samples.mwf;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.stream.Collectors;
-
-import org.apache.servicecomb.foundation.common.utils.JsonUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-
-public class SimpleFileContentFormatter implements FileContentFormatter {
-  private static final Logger logger = LoggerFactory.getLogger(SimpleFileContentFormatter.class);
-
-  private final String applicationName;
-
-  private final String hostName;
-
-  public SimpleFileContentFormatter(String hostName, String applicationName) {
-    this.hostName = hostName;
-    this.applicationName = applicationName;
-  }
-
-  @Override
-  public Map<String, String> format(Map<String, String> input) {
-    return input.entrySet()
-        .stream()
-        .collect(Collectors.toMap(Entry::getKey, entry -> {
-          try {
-            return JsonUtils.writeValueAsString(
-                new OutputJsonObject(applicationName, hostName, entry.getKey(), entry.getValue()));
-          } catch (JsonProcessingException e) {
-            logger.error("error format metrics data", e);
-            return "";
-          }
-        }));
-  }
-
-
-  class OutputJsonObject {
-    private String plugin_id;
-
-    private Map<String, Object> metric;
-
-    public String getPlugin_id() {
-      return plugin_id;
-    }
-
-    public Map<String, Object> getMetric() {
-      return metric;
-    }
-
-    public OutputJsonObject() {
-    }
-
-    public OutputJsonObject(String plugin_id, String hostName, String metricName, String metricValue) {
-      this();
-      this.plugin_id = plugin_id;
-      this.metric = new HashMap<>();
-      this.metric.put("node", hostName);
-      this.metric.put("scope_name", "");
-      this.metric.put("timestamp", System.currentTimeMillis());
-      this.metric.put("inface_name", "");
-      this.metric.put(metricName, metricValue);
-    }
-  }
-}
diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/WriteFileInitializer.java b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/WriteFileInitializer.java
deleted file mode 100644
index d5486b8..0000000
--- a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/WriteFileInitializer.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.samples.mwf;
-
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
-
-import java.util.Map;
-import java.util.concurrent.Executors;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.servicecomb.foundation.common.net.NetUtils;
-import org.apache.servicecomb.metrics.core.MetricsConfig;
-import org.apache.servicecomb.metrics.core.MonitorManager;
-import org.apache.servicecomb.serviceregistry.RegistryUtils;
-import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.netflix.config.DynamicPropertyFactory;
-
-@Component
-public class WriteFileInitializer {
-  private final int metricPoll;
-
-  private FileContentConvertor convertor;
-
-  private FileContentFormatter formatter;
-
-  private final MetricsFileWriter fileWriter;
-
-  private String filePrefix;
-
-  private String hostName;
-
-  @Autowired
-  public WriteFileInitializer(MetricsFileWriter fileWriter) {
-    metricPoll = DynamicPropertyFactory.getInstance().getIntProperty(MetricsConfig.METRICS_WINDOW_TIME, 5000).get();
-    this.fileWriter = fileWriter;
-    this.convertor = new SimpleFileContentConvertor();
-  }
-
-  public WriteFileInitializer(MetricsFileWriter fileWriter, String hostName, String filePrefix) {
-    metricPoll = DynamicPropertyFactory.getInstance().getIntProperty(MetricsConfig.METRICS_WINDOW_TIME, 5000).get();
-    this.fileWriter = fileWriter;
-    this.hostName = hostName;
-    this.filePrefix = filePrefix;
-    this.convertor = new SimpleFileContentConvertor();
-    this.formatter = new SimpleFileContentFormatter(hostName, filePrefix);
-  }
-
-  public void startOutput() {
-    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();
-      }
-    }
-
-    formatter = new SimpleFileContentFormatter(hostName, filePrefix);
-
-    final Runnable poller = this::run;
-    Executors.newScheduledThreadPool(1)
-        .scheduleWithFixedDelay(poller, 0, metricPoll, MILLISECONDS);
-  }
-
-  private void run() {
-    Map<String, Double> metrics = MonitorManager.getInstance().measure();
-    Map<String, String> convertedMetrics = convertor.convert(metrics);
-    Map<String, String> formattedMetrics = formatter.format(convertedMetrics);
-
-    for (String metricName : formattedMetrics.keySet()) {
-      fileWriter.write(metricName, filePrefix, formattedMetrics.get(metricName));
-    }
-  }
-}
diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/main/resources/META-INF/services/org.apache.servicecomb.foundation.metrics.MetricsInitializer b/samples/metrics-write-file-sample/metrics-write-file/src/main/resources/META-INF/services/org.apache.servicecomb.foundation.metrics.MetricsInitializer
new file mode 100644
index 0000000..3a6ad61
--- /dev/null
+++ b/samples/metrics-write-file-sample/metrics-write-file/src/main/resources/META-INF/services/org.apache.servicecomb.foundation.metrics.MetricsInitializer
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+org.apache.servicecomb.samples.mwf.CloudEyeFilePublisher
\ No newline at end of file
diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/main/resources/sample-log4j2.xml b/samples/metrics-write-file-sample/metrics-write-file/src/main/resources/sample-log4j2.xml
new file mode 100644
index 0000000..99ed192
--- /dev/null
+++ b/samples/metrics-write-file-sample/metrics-write-file/src/main/resources/sample-log4j2.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<Configuration status="INFO">
+  <Appenders>
+    <Console name="stdout" target="SYSTEM_OUT">
+      <PatternLayout pattern="%d [%level] [%thread] - %msg (%F:%L\)%n" />
+    </Console>
+
+    <Routing name="cloudEyeRouting">
+      <Routes pattern="$${ctx:fileName}">
+        <Route>
+          <File name="cloudEyeAppender-${ctx:fileName}" append="true"
+            fileName="${sys:cloudEye.logDir}/${ctx:fileName}">
+            <PatternLayout>
+              <Pattern>%msg%n</Pattern>
+            </PatternLayout>
+          </File>
+        </Route>
+      </Routes>
+    </Routing>
+  </Appenders>
+
+  <Loggers>
+    <Root level="info">
+      <AppenderRef ref="stdout" />
+    </Root>
+
+    <Logger name="cloudEyeLogger" level="info" additivity="false">
+      <Appender-ref ref="cloudEyeRouting" />
+    </Logger>
+  </Loggers>
+</Configuration>
\ No newline at end of file
diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/main/resources/sample-logback.xml b/samples/metrics-write-file-sample/metrics-write-file/src/main/resources/sample-logback.xml
new file mode 100644
index 0000000..ee57414
--- /dev/null
+++ b/samples/metrics-write-file-sample/metrics-write-file/src/main/resources/sample-logback.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<configuration scan="true">
+  <jmxConfigurator />
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <encoder>
+      <pattern>%d [%level] [%thread] - %msg (%F:%L\)%n</pattern>
+    </encoder>
+  </appender>
+
+  <root level="INFO">
+    <appender-ref ref="STDOUT" />
+  </root>
+
+  <appender name="cloudEyeAppender" class="ch.qos.logback.classic.sift.SiftingAppender">
+    <!--   This is MDC value -->
+    <discriminator>
+      <key>fileName</key>
+      <defaultValue>unknown</defaultValue>
+    </discriminator>
+
+    <sift>
+      <appender name="cloudEyeAppender-${fileName}" class="ch.qos.logback.core.FileAppender">
+        <file>${cloudEye.logDir}/${fileName}</file>
+        <append>true</append>
+        <layout class="ch.qos.logback.classic.PatternLayout">
+          <pattern>%msg%n</pattern>
+        </layout>
+      </appender>
+    </sift>
+  </appender>
+
+  <logger name="cloudEyeLogger" level="info" additivity="false">
+    <appender-ref ref="cloudEyeAppender" />
+  </logger>
+</configuration>
\ No newline at end of file
diff --git a/samples/metrics-write-file-sample/pom.xml b/samples/metrics-write-file-sample/pom.xml
index 207e907..539a98c 100644
--- a/samples/metrics-write-file-sample/pom.xml
+++ b/samples/metrics-write-file-sample/pom.xml
@@ -31,8 +31,6 @@
   <packaging>pom</packaging>
   <modules>
     <module>metrics-write-file</module>
-    <module>metrics-write-file-log4j-springboot</module>
-    <module>metrics-write-file-log4j2-springboot</module>
   </modules>
 
   <dependencyManagement>
@@ -42,11 +40,6 @@
         <artifactId>metrics-core</artifactId>
         <version>1.0.0-m2-SNAPSHOT</version>
       </dependency>
-      <dependency>
-        <groupId>org.apache.servicecomb.samples</groupId>
-        <artifactId>metrics-write-file</artifactId>
-        <version>1.0.0-m2-SNAPSHOT</version>
-      </dependency>
     </dependencies>
   </dependencyManagement>
 

-- 
To stop receiving notification emails like this one, please contact
wujimin@apache.org.