You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by il...@apache.org on 2019/07/15 05:58:06 UTC

[dubbo] branch master updated: Fix bug #4374 for AccessLogFilter not working (#4566)

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

iluo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/master by this push:
     new 05e44db  Fix bug #4374 for AccessLogFilter not working (#4566)
05e44db is described below

commit 05e44db43c829a7aea6cfc36ff522b981964f0ee
Author: Lonre Wang <lo...@gmail.com>
AuthorDate: Mon Jul 15 13:58:00 2019 +0800

    Fix bug #4374 for AccessLogFilter not working (#4566)
    
    which introduced by #4038
---
 .../org/apache/dubbo/rpc/filter/AccessLogFilter.java |  4 ++--
 .../apache/dubbo/rpc/filter/AccessLogFilterTest.java | 20 +++++++++++++++++++-
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java
index 5563371..ae2bc06 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java
@@ -68,7 +68,7 @@ public class AccessLogFilter implements Filter {
 
     private static final Logger logger = LoggerFactory.getLogger(AccessLogFilter.class);
 
-    private static final String ACCESS_LOG_KEY = "dubbo.accesslog";
+    private static final String LOG_KEY = "dubbo.accesslog";
 
     private static final int LOG_MAX_BUFFER = 5000;
 
@@ -179,7 +179,7 @@ public class AccessLogFilter implements Filter {
              iterator.hasNext();
              iterator.remove()) {
             AccessLogData logData = iterator.next();
-            LoggerFactory.getLogger(ACCESS_LOG_KEY + "." + logData.getServiceName()).info(logData.getLogMessage());
+            LoggerFactory.getLogger(LOG_KEY + "." + logData.getServiceName()).info(logData.getLogMessage());
         }
     }
 
diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/AccessLogFilterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/AccessLogFilterTest.java
index ca84381..3fc463f 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/AccessLogFilterTest.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/AccessLogFilterTest.java
@@ -16,17 +16,23 @@
  */
 package org.apache.dubbo.rpc.filter;
 
+import java.lang.reflect.Field;
+import java.util.Map;
+import java.util.Set;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.utils.LogUtil;
 import org.apache.dubbo.rpc.Filter;
 import org.apache.dubbo.rpc.Invocation;
 import org.apache.dubbo.rpc.Invoker;
+import org.apache.dubbo.rpc.support.AccessLogData;
 import org.apache.dubbo.rpc.support.MockInvocation;
 import org.apache.dubbo.rpc.support.MyInvoker;
 
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * AccessLogFilterTest.java
@@ -48,11 +54,23 @@ public class AccessLogFilterTest {
 
     // TODO how to assert thread action
     @Test
-    public void testDefault() {
+    @SuppressWarnings("unchecked")
+    public void testDefault() throws NoSuchFieldException, IllegalAccessException {
         URL url = URL.valueOf("test://test:11/test?accesslog=true&group=dubbo&version=1.1");
         Invoker<AccessLogFilterTest> invoker = new MyInvoker<AccessLogFilterTest>(url);
         Invocation invocation = new MockInvocation();
+
+        Field field = AccessLogFilter.class.getDeclaredField("LOG_ENTRIES");
+        field.setAccessible(true);
+        assertTrue(((Map) field.get(AccessLogFilter.class)).isEmpty());
+
         accessLogFilter.invoke(invoker, invocation);
+
+        Map<String, Set<AccessLogData>> logs = (Map<String, Set<AccessLogData>>) field.get(AccessLogFilter.class);
+        assertFalse(logs.isEmpty());
+        assertFalse(logs.get("true").isEmpty());
+        AccessLogData log = logs.get("true").iterator().next();
+        assertEquals("org.apache.dubbo.rpc.support.DemoService", log.getServiceName());
     }
 
     @Test