add logger example
diff --git a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java b/basic/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
index 0010f13..964173e 100644
--- a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
+++ b/basic/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
@@ -17,20 +17,47 @@
 
 package org.apache.servicecomb.samples;
 
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.apache.servicecomb.provider.pojo.RpcReference;
 import org.apache.servicecomb.springboot2.starter.EnableServiceComb;
-import org.springframework.boot.SpringApplication;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.stereotype.Component;
 
 @SpringBootApplication
 @EnableServiceComb
+@Component
 public class ConsumerApplication {
+  private static final Logger LOGGER = LoggerFactory.getLogger(ConsumerApplication.class);
+
+  @RpcReference(microserviceName = "provider", schemaId = "ProviderController")
+  private static ProviderService providerService;
+
   public static void main(String[] args) throws Exception {
     try {
       new SpringApplicationBuilder().web(WebApplicationType.NONE).sources(ConsumerApplication.class).run(args);
     } catch (Exception e) {
       e.printStackTrace();
     }
+
+    new Thread() {
+      public void run() {
+        AtomicLong index = new AtomicLong(0);
+
+        while (true) {
+          try {
+            LOGGER.info("call service: name=" + index.get());
+            providerService.sayHello("hello" + index.getAndIncrement());
+            Thread.sleep(2000);
+          } catch (InterruptedException e) {
+            LOGGER.error("", e);
+          }
+        }
+      }
+    }.start();
   }
 }
diff --git a/basic/consumer/src/main/resources/application.yml b/basic/consumer/src/main/resources/application.yml
index 9a98590..713fec6 100644
--- a/basic/consumer/src/main/resources/application.yml
+++ b/basic/consumer/src/main/resources/application.yml
@@ -43,6 +43,8 @@
   rest:
     address: 0.0.0.0:9092  # should be same with server.port to use web container
 
+  metrics:
+    window_time: 5000
 # Configure AK/SK credentials if needed. Default not enabled.
 #  credentials:
 #    akskEnabled: false
diff --git a/basic/consumer/src/main/resources/log4j2.xml b/basic/consumer/src/main/resources/log4j2.xml
deleted file mode 100644
index 313d1fc..0000000
--- a/basic/consumer/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,45 +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.
-  -->
-
-<!--this is sample configuration, please modify as your wish -->
-
-<configuration>
-  <Properties>
-    <Property name="log_path">./file/log/</Property>
-  </Properties>
-
-  <Appenders>
-    <Console name="Console" target="SYSTEM_OUT">
-      <PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" />
-    </Console>
-    <RollingFile name="DailyRollingFile" fileName="${log_path}/output.log"
-      filePattern="${log_path}/zcrTest%d{yyyy-MM-dd}.log">
-      <PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" />
-      <Policies>
-        <TimeBasedTriggeringPolicy interval="1" />
-        <SizeBasedTriggeringPolicy size="10 MB" />
-      </Policies>
-    </RollingFile>
-  </Appenders>
-  <Loggers>
-    <Root level="info">
-      <AppenderRef ref="Console" />
-      <AppenderRef ref="DailyRollingFile" />
-    </Root>
-  </Loggers>
-</configuration>
\ No newline at end of file
diff --git a/basic/consumer/src/main/resources/logback.xml b/basic/consumer/src/main/resources/logback.xml
new file mode 100644
index 0000000..72c6fbf
--- /dev/null
+++ b/basic/consumer/src/main/resources/logback.xml
@@ -0,0 +1,71 @@
+<?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">
+  <appender name="metrics" class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>metrics.log</file>
+    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+      <!-- 按天回滚 daily -->
+      <fileNamePattern>metrics.%d{yyyy-MM-dd}.log</fileNamePattern>
+      <!-- 日志最大的历史 30天 -->
+      <maxHistory>60</maxHistory>
+      <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
+      <!--<totalSizeCap>1GB</totalSizeCap>-->
+    </rollingPolicy>
+    <encoder>
+      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
+    </encoder>
+  </appender>
+
+  <appender name="servicecomb" class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>servicecomb.log</file>
+    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+      <!-- 按天回滚 daily -->
+      <fileNamePattern>servicecomb.%d{yyyy-MM-dd}.log</fileNamePattern>
+      <!-- 日志最大的历史 30天 -->
+      <maxHistory>60</maxHistory>
+      <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
+      <!--<totalSizeCap>1GB</totalSizeCap>-->
+    </rollingPolicy>
+    <encoder>
+      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
+    </encoder>
+  </appender>
+
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <!-- If applicable, can use ch.qos.logback.classic.filter.MarkerFilter -->
+    <filter class="org.apache.servicecomb.foundation.logback.MarkerFilter">
+      <Marker>SERVICECOMB_MARKER</Marker>
+      <OnMismatch>ACCEPT</OnMismatch>
+      <OnMatch>DENY</OnMatch>
+    </filter>
+
+    <encoder>
+      <pattern>%d [%level] [%thread] - %msg (%F:%L\)%n</pattern>
+    </encoder>
+  </appender>
+
+  <logger name="org.apache.servicecomb.metrics.core.publish.DefaultLogPublisher" level="INFO" additivity="false">
+    <appender-ref ref="metrics"/>
+  </logger>
+
+  <root level="info">
+    <appender-ref ref="STDOUT"/>
+    <appender-ref ref="servicecomb"/>
+  </root>
+</configuration>
\ No newline at end of file
diff --git a/basic/gateway/src/main/resources/application.yml b/basic/gateway/src/main/resources/application.yml
index b625f41..f60fd3e 100644
--- a/basic/gateway/src/main/resources/application.yml
+++ b/basic/gateway/src/main/resources/application.yml
@@ -54,7 +54,8 @@
               path: "/.*"
               microserviceName: consumer
               versionRule: 0.0.0+
-
+  metrics:
+    window_time: 5000
 # Configure AK/SK credentials if needed. Default not enabled.
 #  credentials:
 #    akskEnabled: false
diff --git a/basic/gateway/src/main/resources/log4j2.xml b/basic/gateway/src/main/resources/log4j2.xml
deleted file mode 100644
index e9bb265..0000000
--- a/basic/gateway/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,45 +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.
-  -->
-
-<!--this is sample configuration, please modify as your wish -->
-
-<configuration>
-  <Properties>
-    <Property name="log_path">./gateway/log/</Property>
-  </Properties>
-
-  <Appenders>
-    <Console name="Console" target="SYSTEM_OUT">
-      <PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" />
-    </Console>
-    <RollingFile name="DailyRollingFile" fileName="${log_path}/output.log"
-      filePattern="${log_path}/zcrTest%d{yyyy-MM-dd}.log">
-      <PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" />
-      <Policies>
-        <TimeBasedTriggeringPolicy interval="1" />
-        <SizeBasedTriggeringPolicy size="10 MB" />
-      </Policies>
-    </RollingFile>
-  </Appenders>
-  <Loggers>
-    <Root level="info">
-      <AppenderRef ref="Console" />
-      <AppenderRef ref="DailyRollingFile" />
-    </Root>
-  </Loggers>
-</configuration>
\ No newline at end of file
diff --git a/basic/gateway/src/main/resources/logback.xml b/basic/gateway/src/main/resources/logback.xml
new file mode 100644
index 0000000..72c6fbf
--- /dev/null
+++ b/basic/gateway/src/main/resources/logback.xml
@@ -0,0 +1,71 @@
+<?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">
+  <appender name="metrics" class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>metrics.log</file>
+    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+      <!-- 按天回滚 daily -->
+      <fileNamePattern>metrics.%d{yyyy-MM-dd}.log</fileNamePattern>
+      <!-- 日志最大的历史 30天 -->
+      <maxHistory>60</maxHistory>
+      <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
+      <!--<totalSizeCap>1GB</totalSizeCap>-->
+    </rollingPolicy>
+    <encoder>
+      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
+    </encoder>
+  </appender>
+
+  <appender name="servicecomb" class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>servicecomb.log</file>
+    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+      <!-- 按天回滚 daily -->
+      <fileNamePattern>servicecomb.%d{yyyy-MM-dd}.log</fileNamePattern>
+      <!-- 日志最大的历史 30天 -->
+      <maxHistory>60</maxHistory>
+      <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
+      <!--<totalSizeCap>1GB</totalSizeCap>-->
+    </rollingPolicy>
+    <encoder>
+      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
+    </encoder>
+  </appender>
+
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <!-- If applicable, can use ch.qos.logback.classic.filter.MarkerFilter -->
+    <filter class="org.apache.servicecomb.foundation.logback.MarkerFilter">
+      <Marker>SERVICECOMB_MARKER</Marker>
+      <OnMismatch>ACCEPT</OnMismatch>
+      <OnMatch>DENY</OnMatch>
+    </filter>
+
+    <encoder>
+      <pattern>%d [%level] [%thread] - %msg (%F:%L\)%n</pattern>
+    </encoder>
+  </appender>
+
+  <logger name="org.apache.servicecomb.metrics.core.publish.DefaultLogPublisher" level="INFO" additivity="false">
+    <appender-ref ref="metrics"/>
+  </logger>
+
+  <root level="info">
+    <appender-ref ref="STDOUT"/>
+    <appender-ref ref="servicecomb"/>
+  </root>
+</configuration>
\ No newline at end of file
diff --git a/basic/provider/src/main/java/org/apache/servicecomb/samples/ProviderController.java b/basic/provider/src/main/java/org/apache/servicecomb/samples/ProviderController.java
index 6eea777..cc21be0 100644
--- a/basic/provider/src/main/java/org/apache/servicecomb/samples/ProviderController.java
+++ b/basic/provider/src/main/java/org/apache/servicecomb/samples/ProviderController.java
@@ -18,6 +18,8 @@
 package org.apache.servicecomb.samples;
 
 import org.apache.servicecomb.provider.rest.common.RestSchema;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -25,9 +27,12 @@
 @RestSchema(schemaId = "ProviderController")
 @RequestMapping(path = "/")
 public class ProviderController {
+  private static final Logger LOGGER = LoggerFactory.getLogger(ProviderController.class);
+
   // a very simple service to echo the request parameter
   @GetMapping("/sayHello")
   public String sayHello(@RequestParam("name") String name) {
+    LOGGER.info("receive request, name={}", name);
     return "Hello " + name;
   }
 }
diff --git a/basic/provider/src/main/resources/application.yml b/basic/provider/src/main/resources/application.yml
index ab73b03..3047a61 100644
--- a/basic/provider/src/main/resources/application.yml
+++ b/basic/provider/src/main/resources/application.yml
@@ -43,6 +43,8 @@
   rest:
     address: 0.0.0.0:9093 # should be same with server.port to use web container
 
+  metrics:
+    window_time: 5000
 # Configure AK/SK credentials if needed. Default not enabled.
 #  credentials:
 #    akskEnabled: false
diff --git a/basic/provider/src/main/resources/log4j2.xml b/basic/provider/src/main/resources/log4j2.xml
deleted file mode 100644
index 56fc9a0..0000000
--- a/basic/provider/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,45 +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.
-  -->
-
-<!--this is sample configuration, please modify as your wish -->
-
-<configuration>
-  <Properties>
-    <Property name="log_path">./user/log/</Property>
-  </Properties>
-
-  <Appenders>
-    <Console name="Console" target="SYSTEM_OUT">
-      <PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" />
-    </Console>
-    <RollingFile name="DailyRollingFile" fileName="${log_path}/output.log"
-      filePattern="${log_path}/zcrTest%d{yyyy-MM-dd}.log">
-      <PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" />
-      <Policies>
-        <TimeBasedTriggeringPolicy interval="1" />
-        <SizeBasedTriggeringPolicy size="10MB" />
-      </Policies>
-    </RollingFile>
-  </Appenders>
-  <Loggers>
-    <Root level="info">
-      <AppenderRef ref="Console" />
-      <AppenderRef ref="DailyRollingFile" />
-    </Root>
-  </Loggers>
-</configuration>
\ No newline at end of file
diff --git a/basic/provider/src/main/resources/logback.xml b/basic/provider/src/main/resources/logback.xml
new file mode 100644
index 0000000..72c6fbf
--- /dev/null
+++ b/basic/provider/src/main/resources/logback.xml
@@ -0,0 +1,71 @@
+<?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">
+  <appender name="metrics" class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>metrics.log</file>
+    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+      <!-- 按天回滚 daily -->
+      <fileNamePattern>metrics.%d{yyyy-MM-dd}.log</fileNamePattern>
+      <!-- 日志最大的历史 30天 -->
+      <maxHistory>60</maxHistory>
+      <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
+      <!--<totalSizeCap>1GB</totalSizeCap>-->
+    </rollingPolicy>
+    <encoder>
+      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
+    </encoder>
+  </appender>
+
+  <appender name="servicecomb" class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>servicecomb.log</file>
+    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+      <!-- 按天回滚 daily -->
+      <fileNamePattern>servicecomb.%d{yyyy-MM-dd}.log</fileNamePattern>
+      <!-- 日志最大的历史 30天 -->
+      <maxHistory>60</maxHistory>
+      <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
+      <!--<totalSizeCap>1GB</totalSizeCap>-->
+    </rollingPolicy>
+    <encoder>
+      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
+    </encoder>
+  </appender>
+
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <!-- If applicable, can use ch.qos.logback.classic.filter.MarkerFilter -->
+    <filter class="org.apache.servicecomb.foundation.logback.MarkerFilter">
+      <Marker>SERVICECOMB_MARKER</Marker>
+      <OnMismatch>ACCEPT</OnMismatch>
+      <OnMatch>DENY</OnMatch>
+    </filter>
+
+    <encoder>
+      <pattern>%d [%level] [%thread] - %msg (%F:%L\)%n</pattern>
+    </encoder>
+  </appender>
+
+  <logger name="org.apache.servicecomb.metrics.core.publish.DefaultLogPublisher" level="INFO" additivity="false">
+    <appender-ref ref="metrics"/>
+  </logger>
+
+  <root level="info">
+    <appender-ref ref="STDOUT"/>
+    <appender-ref ref="servicecomb"/>
+  </root>
+</configuration>
\ No newline at end of file