func (f *Filter) Invoke(ctx context.Context, invoker protocol.Invoker, invocation protocol.Invocation) protocol.Result {
	accessLog := invoker.GetURL().GetParam(constant.AccessLogFilterKey, "")
	if len(accessLog) > 0 {
		accessLogData := Data{data: f.buildAccessLogData(invoker, invocation), accessLog: accessLog}
		f.logIntoChannel(accessLogData)
	}
	return invoker.Invoke(ctx, invocation)
}
Invoke will check whether user wants to use this filter.
If we find the value of key constant.AccessLogFilterKey, we will log the invocation info
package accesslog
import (
	"context"
	"os"
	"reflect"
	"strings"
	"time"
)
import (
	"dubbo.apache.org/dubbo-go/v3/common/constant"
	"dubbo.apache.org/dubbo-go/v3/common/extension"
	"dubbo.apache.org/dubbo-go/v3/common/logger"
	"dubbo.apache.org/dubbo-go/v3/filter"
	"dubbo.apache.org/dubbo-go/v3/protocol"
)
const (
	FileDateFormat = "2006-01-02"
	MessageDateLayout = "2006-01-02 15:04:05"
	LogMaxBuffer = 5000
	LogFileMode = 0o600
	Types = "types"
	Arguments = "arguments"
)
func init() {
	extension.SetFilter(constant.AccessLogFilterKey, newFilter)
}
type Filter struct {
	logChan chan Data
}