diff --git a/filter/impl/access_log_filter.go b/filter/impl/access_log_filter.go
index 52dde6e901fc6de783733b184246891988fc3772..1b5aa403bca63d46c26385bdec7c5e1acab38957 100644
--- a/filter/impl/access_log_filter.go
+++ b/filter/impl/access_log_filter.go
@@ -17,20 +17,23 @@
 
 package impl
 
+import (
+	"os"
+	"reflect"
+	"strings"
+	"time"
+)
+
 import (
 	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/common/extension"
 	"github.com/apache/dubbo-go/common/logger"
 	"github.com/apache/dubbo-go/filter"
 	"github.com/apache/dubbo-go/protocol"
-	"os"
-	"reflect"
-	"strings"
-	"time"
 )
 
 const (
-	//usd in URL.
+	//used in URL.
 	AccessLogKey      = "accesslog"
 	FileDateFormat    = "2006-01-02"
 	MessageDateLayout = "2006-01-02 15:04:05"
@@ -72,7 +75,7 @@ func (ef *AccessLogFilter) logIntoChannel(accessLogData AccessLogData) {
 }
 
 func (ef *AccessLogFilter) buildAccessLogData(invoker protocol.Invoker, invocation protocol.Invocation) map[string]string {
-	dataMap := make(map[string]string)
+	dataMap := make(map[string]string, 16)
 	attachments := invocation.Attachments()
 	dataMap[constant.INTERFACE_KEY] = attachments[constant.INTERFACE_KEY]
 	dataMap[constant.METHOD_KEY] = invocation.MethodName()
@@ -86,15 +89,15 @@ func (ef *AccessLogFilter) buildAccessLogData(invoker protocol.Invoker, invocati
 		builder := strings.Builder{}
 		// todo(after the paramTypes were set to the invocation. we should change this implementation)
 		typeBuilder := strings.Builder{}
-		first := true
-		for _, arg := range invocation.Arguments() {
-			if first {
-				first = false
-			} else {
-				builder.WriteString(",")
-				typeBuilder.WriteString(",")
-			}
+
+		builder.WriteString(reflect.ValueOf(invocation.Arguments()[0]).String())
+		typeBuilder.WriteString(reflect.TypeOf(invocation.Arguments()[0]).Name())
+		for idx := 1; idx < len(invocation.Arguments()); idx++ {
+			arg := invocation.Arguments()[idx]
+			builder.WriteString(",")
 			builder.WriteString(reflect.ValueOf(arg).String())
+
+			typeBuilder.WriteString(",")
 			typeBuilder.WriteString(reflect.TypeOf(arg).Name())
 		}
 		dataMap[Arguments] = builder.String()
@@ -112,19 +115,20 @@ func (ef *AccessLogFilter) writeLogToFile(data AccessLogData) {
 	accessLog := data.accessLog
 	if isDefault(accessLog) {
 		logger.Info(data.toLogMessage())
-	} else {
-		logFile, err := ef.openLogFile(accessLog)
-		if err != nil {
-			logger.Warnf("Can not open 	the access log file: %s, %v", accessLog, err)
-			return
-		}
-		logger.Debugf("Append log to %s", accessLog)
-		message := data.toLogMessage()
-		message = message + "\n"
-		_, err = logFile.WriteString(message)
-		if err != nil {
-			logger.Warnf("Can not write the log into access log file: %s, %v", accessLog, err)
-		}
+		return
+	}
+
+	logFile, err := ef.openLogFile(accessLog)
+	if err != nil {
+		logger.Warnf("Can not open 	the access log file: %s, %v", accessLog, err)
+		return
+	}
+	logger.Debugf("Append log to %s", accessLog)
+	message := data.toLogMessage()
+	message = message + "\n"
+	_, err = logFile.WriteString(message)
+	if err != nil {
+		logger.Warnf("Can not write the log into access log file: %s, %v", accessLog, err)
 	}
 }
 
@@ -146,9 +150,8 @@ func (ef *AccessLogFilter) openLogFile(accessLog string) (*os.File, error) {
 		if err != nil {
 			logger.Warnf("Can not rename access log file: %s, %v", fileInfo.Name(), err)
 			return nil, err
-		} else {
-			logFile, err = os.OpenFile(accessLog, os.O_CREATE|os.O_APPEND|os.O_RDWR, LogFileMode)
 		}
+		logFile, err = os.OpenFile(accessLog, os.O_CREATE|os.O_APPEND|os.O_RDWR, LogFileMode)
 	}
 	return logFile, err
 }
diff --git a/filter/impl/access_log_filter_test.go b/filter/impl/access_log_filter_test.go
index 662c991a7cca68feea68e5a3c320808f192e408a..834d531f05f952c41abfe8e1c56c20c0285926b8 100644
--- a/filter/impl/access_log_filter_test.go
+++ b/filter/impl/access_log_filter_test.go
@@ -19,12 +19,19 @@ package impl
 
 import (
 	"context"
+	"testing"
+)
+
+import (
+	"github.com/golang/mock/gomock"
+	"github.com/stretchr/testify/assert"
+)
+
+import (
 	"github.com/apache/dubbo-go/common"
+	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/protocol"
 	"github.com/apache/dubbo-go/protocol/invocation"
-	"github.com/golang/mock/gomock"
-	"github.com/stretchr/testify/assert"
-	"testing"
 )
 
 func TestAccessLogFilter_Invoke_Not_Config(t *testing.T) {
@@ -39,7 +46,7 @@ func TestAccessLogFilter_Invoke_Not_Config(t *testing.T) {
 	invoker := protocol.NewBaseInvoker(url)
 
 	attach := make(map[string]string, 10)
-	inv := invocation.NewRPCInvocation("MethodName", []interface{}{"OK"}, attach)
+	inv := invocation.NewRPCInvocation("MethodName", []interface{}{"OK", "Hello"}, attach)
 
 	accessLogFilter := GetAccessLogFilter()
 	result := accessLogFilter.Invoke(invoker, inv)
@@ -58,9 +65,18 @@ func TestAccessLogFilter_Invoke_Default_Config(t *testing.T) {
 	invoker := protocol.NewBaseInvoker(url)
 
 	attach := make(map[string]string, 10)
-	inv := invocation.NewRPCInvocation("MethodName", []interface{}{"OK"}, attach)
+	attach[constant.VERSION_KEY] = "1.0"
+	attach[constant.GROUP_KEY] = "MyGroup"
+	inv := invocation.NewRPCInvocation("MethodName", []interface{}{"OK", "Hello"}, attach)
 
 	accessLogFilter := GetAccessLogFilter()
 	result := accessLogFilter.Invoke(invoker, inv)
 	assert.Nil(t, result.Error())
 }
+
+func TestAccessLogFilter_OnResponse(t *testing.T) {
+	result := &protocol.RPCResult{}
+	accessLogFilter := GetAccessLogFilter()
+	response := accessLogFilter.OnResponse(result, nil, nil)
+	assert.Equal(t, result, response)
+}