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

alexstocks pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git


The following commit(s) were added to refs/heads/3.0 by this push:
     new ae8893a54 Fix: xds logs and typos (#1846)
ae8893a54 is described below

commit ae8893a5479f552d7ec08e36a8770144bd838f4b
Author: Laurence <[email protected]>
AuthorDate: Thu Apr 21 19:01:29 2022 +0800

    Fix: xds logs and typos (#1846)
---
 remoting/xds/client.go                             |  6 +--
 remoting/xds/client_test.go                        |  6 +--
 remoting/xds/error.go                              |  4 +-
 xds/balancer/cdsbalancer/cdsbalancer.go            | 20 +++++-----
 xds/balancer/cdsbalancer/logging.go                | 44 ----------------------
 xds/balancer/clusterimpl/clusterimpl.go            | 12 +++---
 xds/balancer/clusterimpl/logging.go                | 44 ----------------------
 xds/balancer/clusterimpl/picker.go                 |  3 +-
 .../clustermanager/balancerstateaggregator.go      |  6 +--
 xds/balancer/clustermanager/clustermanager.go      | 16 ++------
 xds/balancer/clusterresolver/clusterresolver.go    | 26 ++++++-------
 xds/balancer/clusterresolver/configbuilder.go      |  5 ++-
 xds/balancer/clusterresolver/logging.go            | 44 ----------------------
 xds/balancer/orca/orca.go                          |  9 ++---
 xds/balancer/priority/balancer.go                  |  6 +--
 xds/balancer/priority/balancer_child.go            |  2 +-
 xds/balancer/priority/balancer_priority.go         |  2 +-
 xds/balancer/priority/logging.go                   | 44 ----------------------
 xds/balancer/ringhash/logging.go                   | 18 ---------
 xds/balancer/ringhash/picker.go                    |  6 +--
 xds/balancer/ringhash/ringhash.go                  |  8 ++--
 xds/client/authority.go                            |  4 ++
 xds/client/bootstrap/bootstrap.go                  | 13 ++++---
 xds/client/bootstrap/logging.go                    | 10 -----
 xds/client/client.go                               |  6 +--
 xds/client/controller.go                           |  4 +-
 xds/client/controller/controller.go                | 20 +++++-----
 xds/client/controller/transport.go                 | 20 +++++-----
 xds/client/controller/version/v2/client.go         |  6 +--
 xds/client/controller/version/v3/client.go         |  6 +--
 xds/client/controller/version/version.go           |  4 +-
 xds/client/logging.go                              | 44 ----------------------
 xds/client/pubsub/pubsub.go                        |  6 +--
 xds/client/resource/filter_chain.go                | 16 ++++----
 xds/client/resource/unmarshal.go                   |  4 +-
 xds/client/resource/unmarshal_cds.go               |  6 +--
 xds/client/resource/unmarshal_eds.go               |  6 +--
 xds/client/resource/unmarshal_lds.go               | 12 +++---
 xds/client/resource/unmarshal_rds.go               | 14 +++----
 xds/csds/csds.go                                   | 12 +++---
 xds/resolver/logging.go                            | 44 ----------------------
 xds/resolver/watch_service.go                      |  6 +--
 xds/resolver/xds_resolver.go                       | 10 ++---
 xds/server/listener_wrapper.go                     | 24 +++++-------
 xds/utils/balancergroup/balancergroup.go           |  6 +--
 xds/utils/grpclog/grpclog.go                       |  4 +-
 xds/utils/grpclog/prefixLogger.go                  | 15 +-------
 xds/utils/serviceconfig/serviceconfig.go           |  8 ++--
 48 files changed, 173 insertions(+), 488 deletions(-)

diff --git a/remoting/xds/client.go b/remoting/xds/client.go
index 7bfec7c5e..448744eb7 100644
--- a/remoting/xds/client.go
+++ b/remoting/xds/client.go
@@ -414,7 +414,7 @@ func (w *WrappedClientImpl) 
startWatchingAllClusterAndLoadLocalHostAddrAndIstioP
                                        for _, e := range v.Endpoints {
                                                w.istiodPodIP = 
xdsCommon.NewHostNameOrIPAddr(e.Address).HostnameOrIP
                                                foundIstiod = true
-                                               close(foundLocalStopCh)
+                                               close(foundIstiodStopCh)
                                        }
                                }
                        })
@@ -432,7 +432,7 @@ func (w *WrappedClientImpl) 
startWatchingAllClusterAndLoadLocalHostAddrAndIstioP
                                                cluster := 
xdsCommon.NewCluster(update.ClusterName)
                                                w.hostAddr = cluster.Addr
                                                foundLocal = true
-                                               close(foundIstiodStopCh)
+                                               close(foundLocalStopCh)
                                        }
                                }
                        }
@@ -463,7 +463,7 @@ func (w *WrappedClientImpl) 
startWatchingAllClusterAndLoadLocalHostAddrAndIstioP
                case <-foundIstiodStopCh:
                        return DiscoverLocalError
                default:
-                       return DiscoverIstioPodError
+                       return DiscoverIstiodPodError
                }
        }
 }
diff --git a/remoting/xds/client_test.go b/remoting/xds/client_test.go
index 254fd5f02..dea3a9f43 100644
--- a/remoting/xds/client_test.go
+++ b/remoting/xds/client_test.go
@@ -250,7 +250,7 @@ func testFailedWithIstioCDS(t *testing.T) {
                return mockXDSClient, nil
        }
        xdsWrappedClient, err := NewXDSWrappedClient(podNameFoo, 
localNamespaceFoo, localIPFoo, common.NewHostNameOrIPAddr(istioHostAddrFoo))
-       assert.Equal(t, DiscoverIstioPodError, err)
+       assert.Equal(t, DiscoverIstiodPodError, err)
        assert.Nil(t, xdsWrappedClient)
        assert.Equal(t, int32(1), cancelCalledCounter.Load())
 }
@@ -400,7 +400,7 @@ func testFailedWithNoneCDS(t *testing.T) {
                return mockXDSClient, nil
        }
        xdsWrappedClient, err := NewXDSWrappedClient(podNameFoo, 
localNamespaceFoo, localIPFoo, common.NewHostNameOrIPAddr(istioHostAddrFoo))
-       assert.Equal(t, DiscoverIstioPodError, err)
+       assert.Equal(t, DiscoverIstiodPodError, err)
        assert.Nil(t, xdsWrappedClient)
        assert.Equal(t, int32(0), cancelCalledCounter.Load())
 }
@@ -550,7 +550,7 @@ func testFailedWithIstioEDSFailed(t *testing.T) {
                return mockXDSClient, nil
        }
        xdsWrappedClient, err := NewXDSWrappedClient(podNameFoo, 
localNamespaceFoo, localIPFoo, common.NewHostNameOrIPAddr(istioHostAddrFoo))
-       assert.Equal(t, DiscoverIstioPodError, err)
+       assert.Equal(t, DiscoverIstiodPodError, err)
        assert.Nil(t, xdsWrappedClient)
        assert.Equal(t, int32(2), cancelCalledCounter.Load())
 }
diff --git a/remoting/xds/error.go b/remoting/xds/error.go
index ca81febdf..84325bc5f 100644
--- a/remoting/xds/error.go
+++ b/remoting/xds/error.go
@@ -22,6 +22,6 @@ import (
 )
 
 var (
-       DiscoverLocalError    = errors.New("Discovery local Pod's host from xds 
failed, please register service with endpoint to k8s")
-       DiscoverIstioPodError = errors.New("Discovery local Pod's host from xds 
failed, please register service with endpoint to k8s")
+       DiscoverLocalError     = errors.New("Discovery local Pod's host from 
xds, failed please register service with endpoint to k8s ")
+       DiscoverIstiodPodError = errors.New("Discovery istiod Pod's host from 
xds failed, please register service with endpoint to k8s ")
 )
diff --git a/xds/balancer/cdsbalancer/cdsbalancer.go 
b/xds/balancer/cdsbalancer/cdsbalancer.go
index 753a7d63e..3907a795e 100644
--- a/xds/balancer/cdsbalancer/cdsbalancer.go
+++ b/xds/balancer/cdsbalancer/cdsbalancer.go
@@ -45,13 +45,13 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/balancer/clusterresolver"
        "dubbo.apache.org/dubbo-go/v3/xds/balancer/ringhash"
        "dubbo.apache.org/dubbo-go/v3/xds/client"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/buffer"
        xdsinternal "dubbo.apache.org/dubbo-go/v3/xds/utils/credentials/xds"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/grpcsync"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/pretty"
        internalserviceconfig 
"dubbo.apache.org/dubbo-go/v3/xds/utils/serviceconfig"
@@ -97,7 +97,7 @@ func (bb) Build(cc balancer.ClientConn, opts 
balancer.BuildOptions) balancer.Bal
                done:     grpcsync.NewEvent(),
                xdsHI:    xdsinternal.NewHandshakeInfo(nil, nil),
        }
-       b.logger = prefixLogger((b))
+       b.logger = dubboLogger.GetLogger()
        b.logger.Infof("Created")
        var creds credentials.TransportCredentials
        switch {
@@ -172,7 +172,7 @@ type cdsBalancer struct {
        xdsClient      client.XDSClient      // xDS client to watch Cluster 
resource.
        clusterHandler *clusterHandler       // To watch the clusters.
        childLB        balancer.Balancer
-       logger         *grpclog.PrefixLogger
+       logger         dubboLogger.Logger
        closed         *grpcsync.Event
        done           *grpcsync.Event
 
@@ -290,7 +290,7 @@ func buildProviderFunc(configs 
map[string]*certprovider.BuildableConfig, instanc
 // lead to clientConn updates being invoked on the underlying cluster_resolver 
balancer.
 func (b *cdsBalancer) handleWatchUpdate(update clusterHandlerUpdate) {
        if err := update.err; err != nil {
-               b.logger.Warningf("Watch error from xds-client %p: %v", 
b.xdsClient, err)
+               b.logger.Warnf("Watch error from xds-client %p: %v", 
b.xdsClient, err)
                b.handleErrorFromUpdate(err, false)
                return
        }
@@ -306,7 +306,7 @@ func (b *cdsBalancer) handleWatchUpdate(update 
clusterHandlerUpdate) {
                // If the security config is invalid, for example, if the 
provider
                // instance is not found in the bootstrap config, we need to 
put the
                // channel in transient failure.
-               b.logger.Warningf("Invalid security config update from 
xds-client %p: %v", b.xdsClient, err)
+               b.logger.Warnf("Invalid security config update from xds-client 
%p: %v", b.xdsClient, err)
                b.handleErrorFromUpdate(err, false)
                return
        }
@@ -471,7 +471,7 @@ func (b *cdsBalancer) handleErrorFromUpdate(err error, 
fromParent bool) {
 // xdsResolver.
 func (b *cdsBalancer) UpdateClientConnState(state balancer.ClientConnState) 
error {
        if b.closed.HasFired() {
-               b.logger.Warningf("xds: received ClientConnState {%+v} after 
cdsBalancer was closed", state)
+               b.logger.Warnf("xds: received ClientConnState {%+v} after 
cdsBalancer was closed", state)
                return errBalancerClosed
        }
 
@@ -489,11 +489,11 @@ func (b *cdsBalancer) UpdateClientConnState(state 
balancer.ClientConnState) erro
        // something that is received on the wire.
        lbCfg, ok := state.BalancerConfig.(*lbConfig)
        if !ok {
-               b.logger.Warningf("xds: unexpected LoadBalancingConfig type: 
%T", state.BalancerConfig)
+               b.logger.Warnf("xds: unexpected LoadBalancingConfig type: %T", 
state.BalancerConfig)
                return balancer.ErrBadResolverState
        }
        if lbCfg.ClusterName == "" {
-               b.logger.Warningf("xds: no clusterName found in 
LoadBalancingConfig: %+v", lbCfg)
+               b.logger.Warnf("xds: no clusterName found in 
LoadBalancingConfig: %+v", lbCfg)
                return balancer.ErrBadResolverState
        }
        b.updateCh.Put(&ccUpdate{clusterName: lbCfg.ClusterName})
@@ -503,7 +503,7 @@ func (b *cdsBalancer) UpdateClientConnState(state 
balancer.ClientConnState) erro
 // ResolverError handles errors reported by the xdsResolver.
 func (b *cdsBalancer) ResolverError(err error) {
        if b.closed.HasFired() {
-               b.logger.Warningf("xds: received resolver error {%v} after 
cdsBalancer was closed", err)
+               b.logger.Warnf("xds: received resolver error {%v} after 
cdsBalancer was closed", err)
                return
        }
        b.updateCh.Put(&ccUpdate{err: err})
@@ -512,7 +512,7 @@ func (b *cdsBalancer) ResolverError(err error) {
 // UpdateSubConnState handles subConn updates from gRPC.
 func (b *cdsBalancer) UpdateSubConnState(sc balancer.SubConn, state 
balancer.SubConnState) {
        if b.closed.HasFired() {
-               b.logger.Warningf("xds: received subConn update {%v, %v} after 
cdsBalancer was closed", sc, state)
+               b.logger.Warnf("xds: received subConn update {%v, %v} after 
cdsBalancer was closed", sc, state)
                return
        }
        b.updateCh.Put(&scUpdate{subConn: sc, state: state})
diff --git a/xds/balancer/cdsbalancer/logging.go 
b/xds/balancer/cdsbalancer/logging.go
deleted file mode 100644
index c1a673a7a..000000000
--- a/xds/balancer/cdsbalancer/logging.go
+++ /dev/null
@@ -1,44 +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.
- */
-
-/*
- *
- * Copyright 2020 gRPC authors.
- *
- */
-
-package cdsbalancer
-
-import (
-       "fmt"
-)
-
-import (
-       "google.golang.org/grpc/grpclog"
-)
-
-import (
-       internalgrpclog "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
-)
-
-const prefix = "[cds-lb %p] "
-
-var logger = grpclog.Component("xds")
-
-func prefixLogger(p *cdsBalancer) *internalgrpclog.PrefixLogger {
-       return internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(prefix, p))
-}
diff --git a/xds/balancer/clusterimpl/clusterimpl.go 
b/xds/balancer/clusterimpl/clusterimpl.go
index 61ae145b1..c18c9a412 100644
--- a/xds/balancer/clusterimpl/clusterimpl.go
+++ b/xds/balancer/clusterimpl/clusterimpl.go
@@ -46,13 +46,13 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        internal "dubbo.apache.org/dubbo-go/v3/xds"
        "dubbo.apache.org/dubbo-go/v3/xds/balancer/loadstore"
        "dubbo.apache.org/dubbo-go/v3/xds/client"
        "dubbo.apache.org/dubbo-go/v3/xds/client/load"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/buffer"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/grpcsync"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/pretty"
 )
@@ -80,7 +80,7 @@ func (bb) Build(cc balancer.ClientConn, bOpts 
balancer.BuildOptions) balancer.Ba
                pickerUpdateCh:  buffer.NewUnbounded(),
                requestCountMax: defaultRequestCountMax,
        }
-       b.logger = prefixLogger(b)
+       b.logger = dubboLogger.GetLogger()
        go b.run()
        b.logger.Infof("Created")
        return b
@@ -110,7 +110,7 @@ type clusterImplBalancer struct {
        done   *grpcsync.Event
 
        bOpts     balancer.BuildOptions
-       logger    *grpclog.PrefixLogger
+       logger    dubboLogger.Logger
        xdsClient client.XDSClient
 
        config           *LBConfig
@@ -229,7 +229,7 @@ func (b *clusterImplBalancer) updateLoadStore(newConfig 
*LBConfig) error {
 
 func (b *clusterImplBalancer) UpdateClientConnState(s 
balancer.ClientConnState) error {
        if b.closed.HasFired() {
-               b.logger.Warningf("xds: received ClientConnState {%+v} after 
clusterImplBalancer was closed", s)
+               b.logger.Warnf("xds: received ClientConnState {%+v} after 
clusterImplBalancer was closed", s)
                return nil
        }
 
@@ -295,7 +295,7 @@ func (b *clusterImplBalancer) UpdateClientConnState(s 
balancer.ClientConnState)
 
 func (b *clusterImplBalancer) ResolverError(err error) {
        if b.closed.HasFired() {
-               b.logger.Warningf("xds: received resolver error {%+v} after 
clusterImplBalancer was closed", err)
+               b.logger.Warnf("xds: received resolver error {%+v} after 
clusterImplBalancer was closed", err)
                return
        }
 
@@ -306,7 +306,7 @@ func (b *clusterImplBalancer) ResolverError(err error) {
 
 func (b *clusterImplBalancer) UpdateSubConnState(sc balancer.SubConn, s 
balancer.SubConnState) {
        if b.closed.HasFired() {
-               b.logger.Warningf("xds: received subconn state change {%+v, 
%+v} after clusterImplBalancer was closed", sc, s)
+               b.logger.Warnf("xds: received subconn state change {%+v, %+v} 
after clusterImplBalancer was closed", sc, s)
                return
        }
 
diff --git a/xds/balancer/clusterimpl/logging.go 
b/xds/balancer/clusterimpl/logging.go
deleted file mode 100644
index 3fba05176..000000000
--- a/xds/balancer/clusterimpl/logging.go
+++ /dev/null
@@ -1,44 +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.
- */
-
-/*
- *
- * Copyright 2020 gRPC authors.
- *
- */
-
-package clusterimpl
-
-import (
-       "fmt"
-)
-
-import (
-       "google.golang.org/grpc/grpclog"
-)
-
-import (
-       internalgrpclog "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
-)
-
-const prefix = "[xds-cluster-impl-lb %p] "
-
-var logger = grpclog.Component("xds")
-
-func prefixLogger(p *clusterImplBalancer) *internalgrpclog.PrefixLogger {
-       return internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(prefix, p))
-}
diff --git a/xds/balancer/clusterimpl/picker.go 
b/xds/balancer/clusterimpl/picker.go
index afcd8b3a4..95a1f7d8a 100644
--- a/xds/balancer/clusterimpl/picker.go
+++ b/xds/balancer/clusterimpl/picker.go
@@ -36,6 +36,7 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client"
        "dubbo.apache.org/dubbo-go/v3/xds/client/load"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/wrr"
@@ -149,7 +150,7 @@ func (d *picker) Pick(info balancer.PickInfo) 
(balancer.PickResult, error) {
                // be used.
                lIDStr, e = scw.localityID().ToString()
                if e != nil {
-                       logger.Infof("failed to marshal LocalityID: %#v, loads 
won't be reported", scw.localityID())
+                       dubboLogger.Infof("failed to marshal LocalityID: %#v, 
loads won't be reported", scw.localityID())
                }
        }
 
diff --git a/xds/balancer/clustermanager/balancerstateaggregator.go 
b/xds/balancer/clustermanager/balancerstateaggregator.go
index 8261d90a6..b735cc35b 100644
--- a/xds/balancer/clustermanager/balancerstateaggregator.go
+++ b/xds/balancer/clustermanager/balancerstateaggregator.go
@@ -36,7 +36,7 @@ import (
 )
 
 import (
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
 )
 
 type subBalancerState struct {
@@ -55,7 +55,7 @@ func (s *subBalancerState) String() string {
 
 type balancerStateAggregator struct {
        cc     balancer.ClientConn
-       logger *grpclog.PrefixLogger
+       logger dubboLogger.Logger
 
        mu sync.Mutex
        // If started is false, no updates should be sent to the parent cc. A 
closed
@@ -70,7 +70,7 @@ type balancerStateAggregator struct {
        idToPickerState map[string]*subBalancerState
 }
 
-func newBalancerStateAggregator(cc balancer.ClientConn, logger 
*grpclog.PrefixLogger) *balancerStateAggregator {
+func newBalancerStateAggregator(cc balancer.ClientConn, logger 
dubboLogger.Logger) *balancerStateAggregator {
        return &balancerStateAggregator{
                cc:              cc,
                logger:          logger,
diff --git a/xds/balancer/clustermanager/clustermanager.go 
b/xds/balancer/clustermanager/clustermanager.go
index 41c63151f..989da2c18 100644
--- a/xds/balancer/clustermanager/clustermanager.go
+++ b/xds/balancer/clustermanager/clustermanager.go
@@ -32,16 +32,14 @@ import (
 import (
        "google.golang.org/grpc/balancer"
 
-       "google.golang.org/grpc/grpclog"
-
        "google.golang.org/grpc/resolver"
 
        "google.golang.org/grpc/serviceconfig"
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/balancergroup"
-       internalgrpclog "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/hierarchy"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/pretty"
 )
@@ -56,7 +54,7 @@ type bb struct{}
 
 func (bb) Build(cc balancer.ClientConn, opts balancer.BuildOptions) 
balancer.Balancer {
        b := &bal{}
-       b.logger = prefixLogger(b)
+       b.logger = dubboLogger.GetLogger()
        b.stateAggregator = newBalancerStateAggregator(cc, b.logger)
        b.stateAggregator.start()
        b.bg = balancergroup.New(cc, opts, b.stateAggregator, b.logger)
@@ -74,7 +72,7 @@ func (bb) ParseConfig(c json.RawMessage) 
(serviceconfig.LoadBalancingConfig, err
 }
 
 type bal struct {
-       logger *internalgrpclog.PrefixLogger
+       logger dubboLogger.Logger
 
        // TODO: make this package not dependent on xds specific code. Same as 
for
        // weighted target balancer.
@@ -152,11 +150,3 @@ func (b *bal) Close() {
 func (b *bal) ExitIdle() {
        b.bg.ExitIdle()
 }
-
-const prefix = "[xds-cluster-manager-lb %p] "
-
-var logger = grpclog.Component("xds")
-
-func prefixLogger(p *bal) *internalgrpclog.PrefixLogger {
-       return internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(prefix, p))
-}
diff --git a/xds/balancer/clusterresolver/clusterresolver.go 
b/xds/balancer/clusterresolver/clusterresolver.go
index b53136803..ca6ee604e 100644
--- a/xds/balancer/clusterresolver/clusterresolver.go
+++ b/xds/balancer/clusterresolver/clusterresolver.go
@@ -44,11 +44,11 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/balancer/priority"
        "dubbo.apache.org/dubbo-go/v3/xds/client"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/buffer"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/grpcsync"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/pretty"
 )
@@ -73,12 +73,12 @@ type bb struct{}
 func (bb) Build(cc balancer.ClientConn, opts balancer.BuildOptions) 
balancer.Balancer {
        priorityBuilder := balancer.Get(priority.Name)
        if priorityBuilder == nil {
-               logger.Errorf("priority balancer is needed but not registered")
+               dubboLogger.Errorf("priority balancer is needed but not 
registered")
                return nil
        }
        priorityConfigParser, ok := priorityBuilder.(balancer.ConfigParser)
        if !ok {
-               logger.Errorf("priority balancer builder is not a config 
parser")
+               dubboLogger.Errorf("priority balancer builder is not a config 
parser")
                return nil
        }
 
@@ -91,7 +91,7 @@ func (bb) Build(cc balancer.ClientConn, opts 
balancer.BuildOptions) balancer.Bal
                priorityBuilder:      priorityBuilder,
                priorityConfigParser: priorityConfigParser,
        }
-       b.logger = prefixLogger(b)
+       b.logger = dubboLogger.GetLogger()
        b.logger.Infof("Created")
 
        b.resourceWatcher = newResourceResolver(b)
@@ -141,7 +141,7 @@ type clusterResolverBalancer struct {
        bOpts           balancer.BuildOptions
        updateCh        *buffer.Unbounded // Channel for updates from gRPC.
        resourceWatcher *resourceResolver
-       logger          *grpclog.PrefixLogger
+       logger          dubboLogger.Logger
        closed          *grpcsync.Event
        done            *grpcsync.Event
 
@@ -173,7 +173,7 @@ func (b *clusterResolverBalancer) 
handleClientConnUpdate(update *ccUpdate) {
        b.logger.Infof("Receive update from resolver, balancer config: %v", 
pretty.ToJSON(update.state.BalancerConfig))
        cfg, _ := update.state.BalancerConfig.(*LBConfig)
        if cfg == nil {
-               b.logger.Warningf("xds: unexpected LoadBalancingConfig type: 
%T", update.state.BalancerConfig)
+               b.logger.Warnf("xds: unexpected LoadBalancingConfig type: %T", 
update.state.BalancerConfig)
                return
        }
 
@@ -189,7 +189,7 @@ func (b *clusterResolverBalancer) 
handleClientConnUpdate(update *ccUpdate) {
        // need to generate a new balancer config and send it to the child, 
because
        // certain fields (unrelated to EDS watch) might have changed.
        if err := b.updateChildConfig(); err != nil {
-               b.logger.Warningf("failed to update child policy config: %v", 
err)
+               b.logger.Warnf("failed to update child policy config: %v", err)
        }
 }
 
@@ -197,7 +197,7 @@ func (b *clusterResolverBalancer) 
handleClientConnUpdate(update *ccUpdate) {
 // lead to clientConn updates being invoked on the underlying child balancer.
 func (b *clusterResolverBalancer) handleWatchUpdate(update *resourceUpdate) {
        if err := update.err; err != nil {
-               b.logger.Warningf("Watch error from xds-client %p: %v", 
b.xdsClient, err)
+               b.logger.Warnf("Watch error from xds-client %p: %v", 
b.xdsClient, err)
                b.handleErrorFromUpdate(err, false)
                return
        }
@@ -210,7 +210,7 @@ func (b *clusterResolverBalancer) handleWatchUpdate(update 
*resourceUpdate) {
        // for the priority balancer), and new addresses (the endpoints come 
from
        // the EDS response).
        if err := b.updateChildConfig(); err != nil {
-               b.logger.Warningf("failed to update child policy's balancer 
config: %v", err)
+               b.logger.Warnf("failed to update child policy's balancer 
config: %v", err)
        }
 }
 
@@ -258,7 +258,7 @@ func (b *clusterResolverBalancer) updateChildConfig() error 
{
 // watcher should keep watching.
 // In both cases, the sub-balancers will be receive the error.
 func (b *clusterResolverBalancer) handleErrorFromUpdate(err error, fromParent 
bool) {
-       b.logger.Warningf("Received error: %v", err)
+       b.logger.Warnf("Received error: %v", err)
        if fromParent && resource.ErrType(err) == 
resource.ErrorTypeResourceNotFound {
                // This is an error from the parent ClientConn (can be the 
parent CDS
                // balancer), and is a resource-not-found error. This means the 
resource
@@ -336,7 +336,7 @@ func (b *clusterResolverBalancer) run() {
 // xdsResolver.
 func (b *clusterResolverBalancer) UpdateClientConnState(state 
balancer.ClientConnState) error {
        if b.closed.HasFired() {
-               b.logger.Warningf("xds: received ClientConnState {%+v} after 
clusterResolverBalancer was closed", state)
+               b.logger.Warnf("xds: received ClientConnState {%+v} after 
clusterResolverBalancer was closed", state)
                return errBalancerClosed
        }
 
@@ -356,7 +356,7 @@ func (b *clusterResolverBalancer) 
UpdateClientConnState(state balancer.ClientCon
 // ResolverError handles errors reported by the xdsResolver.
 func (b *clusterResolverBalancer) ResolverError(err error) {
        if b.closed.HasFired() {
-               b.logger.Warningf("xds: received resolver error {%v} after 
clusterResolverBalancer was closed", err)
+               b.logger.Warnf("xds: received resolver error {%v} after 
clusterResolverBalancer was closed", err)
                return
        }
        b.updateCh.Put(&ccUpdate{err: err})
@@ -365,7 +365,7 @@ func (b *clusterResolverBalancer) ResolverError(err error) {
 // UpdateSubConnState handles subConn updates from gRPC.
 func (b *clusterResolverBalancer) UpdateSubConnState(sc balancer.SubConn, 
state balancer.SubConnState) {
        if b.closed.HasFired() {
-               b.logger.Warningf("xds: received subConn update {%v, %v} after 
clusterResolverBalancer was closed", sc, state)
+               b.logger.Warnf("xds: received subConn update {%v, %v} after 
clusterResolverBalancer was closed", sc, state)
                return
        }
        b.updateCh.Put(&scUpdate{subConn: sc, state: state})
diff --git a/xds/balancer/clusterresolver/configbuilder.go 
b/xds/balancer/clusterresolver/configbuilder.go
index a9397f487..9c3985bbe 100644
--- a/xds/balancer/clusterresolver/configbuilder.go
+++ b/xds/balancer/clusterresolver/configbuilder.go
@@ -38,6 +38,7 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/balancer/clusterimpl"
        "dubbo.apache.org/dubbo-go/v3/xds/balancer/priority"
        "dubbo.apache.org/dubbo-go/v3/xds/balancer/ringhash"
@@ -276,7 +277,7 @@ func priorityLocalitiesToClusterImpl(localities 
[]resource.Locality, priorityNam
                // If lb policy is ROUND_ROBIN:
                // - locality-picking policy is weighted_target
                // - endpoint-picking policy is round_robin
-               logger.Infof("xds lb policy is %q, building config with 
weighted_target + round_robin", rrName)
+               dubboLogger.Infof("xds lb policy is %q, building config with 
weighted_target + round_robin", rrName)
                // Child of weighted_target is hardcoded to round_robin.
                wtConfig, addrs := localitiesToWeightedTarget(localities, 
priorityName, rrBalancerConfig)
                clusterImplCfg.ChildPolicy = 
&internalserviceconfig.BalancerConfig{Name: weightedtarget.Name, Config: 
wtConfig}
@@ -287,7 +288,7 @@ func priorityLocalitiesToClusterImpl(localities 
[]resource.Locality, priorityNam
                // If lb policy is RIHG_HASH, will build one ring_hash policy 
as child.
                // The endpoints from all localities will be flattened to one 
addresses
                // list, and the ring_hash policy will pick endpoints from it.
-               logger.Infof("xds lb policy is %q, building config with 
ring_hash", rhName)
+               dubboLogger.Infof("xds lb policy is %q, building config with 
ring_hash", rhName)
                addrs := localitiesToRingHash(localities, priorityName)
                // Set child to ring_hash, note that the ring_hash config is 
from
                // xdsLBPolicy.
diff --git a/xds/balancer/clusterresolver/logging.go 
b/xds/balancer/clusterresolver/logging.go
deleted file mode 100644
index c9822dae7..000000000
--- a/xds/balancer/clusterresolver/logging.go
+++ /dev/null
@@ -1,44 +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.
- */
-
-/*
- *
- * Copyright 2020 gRPC authors.
- *
- */
-
-package clusterresolver
-
-import (
-       "fmt"
-)
-
-import (
-       "google.golang.org/grpc/grpclog"
-)
-
-import (
-       internalgrpclog "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
-)
-
-const prefix = "[xds-cluster-resolver-lb %p] "
-
-var logger = grpclog.Component("xds")
-
-func prefixLogger(p *clusterResolverBalancer) *internalgrpclog.PrefixLogger {
-       return internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(prefix, p))
-}
diff --git a/xds/balancer/orca/orca.go b/xds/balancer/orca/orca.go
index 4e78f1424..4ce9ec845 100644
--- a/xds/balancer/orca/orca.go
+++ b/xds/balancer/orca/orca.go
@@ -29,19 +29,16 @@ import (
 
        "github.com/golang/protobuf/proto"
 
-       "google.golang.org/grpc/grpclog"
-
        "google.golang.org/grpc/metadata"
 )
 
 import (
+       "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/balancerload"
 )
 
 const mdKey = "X-Endpoint-Load-Metrics-Bin"
 
-var logger = grpclog.Component("xds")
-
 // toBytes converts a orca load report into bytes.
 func toBytes(r *orcapb.OrcaLoadReport) []byte {
        if r == nil {
@@ -50,7 +47,7 @@ func toBytes(r *orcapb.OrcaLoadReport) []byte {
 
        b, err := proto.Marshal(r)
        if err != nil {
-               logger.Warningf("orca: failed to marshal load report: %v", err)
+               logger.Warnf("orca: failed to marshal load report: %v", err)
                return nil
        }
        return b
@@ -69,7 +66,7 @@ func ToMetadata(r *orcapb.OrcaLoadReport) metadata.MD {
 func fromBytes(b []byte) *orcapb.OrcaLoadReport {
        ret := new(orcapb.OrcaLoadReport)
        if err := proto.Unmarshal(b, ret); err != nil {
-               logger.Warningf("orca: failed to unmarshal load report: %v", 
err)
+               logger.Warnf("orca: failed to unmarshal load report: %v", err)
                return nil
        }
        return ret
diff --git a/xds/balancer/priority/balancer.go 
b/xds/balancer/priority/balancer.go
index 99eb57162..76bacd4c7 100644
--- a/xds/balancer/priority/balancer.go
+++ b/xds/balancer/priority/balancer.go
@@ -44,9 +44,9 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/balancergroup"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/buffer"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/grpcsync"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/hierarchy"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/pretty"
@@ -70,7 +70,7 @@ func (bb) Build(cc balancer.ClientConn, bOpts 
balancer.BuildOptions) balancer.Ba
                childBalancerStateUpdate: buffer.NewUnbounded(),
        }
 
-       b.logger = prefixLogger(b)
+       b.logger = dubboLogger.GetLogger()
        b.bg = balancergroup.New(cc, bOpts, b, b.logger)
        b.bg.Start()
        go b.run()
@@ -94,7 +94,7 @@ type timerWrapper struct {
 }
 
 type priorityBalancer struct {
-       logger                   *grpclog.PrefixLogger
+       logger                   dubboLogger.Logger
        cc                       balancer.ClientConn
        bg                       *balancergroup.BalancerGroup
        done                     *grpcsync.Event
diff --git a/xds/balancer/priority/balancer_child.go 
b/xds/balancer/priority/balancer_child.go
index d7414c25a..75561be1d 100644
--- a/xds/balancer/priority/balancer_child.go
+++ b/xds/balancer/priority/balancer_child.go
@@ -98,7 +98,7 @@ func (cb *childBalancer) sendUpdate() {
                BalancerConfig: cb.config,
        })
        if err != nil {
-               cb.parent.logger.Warningf("failed to update ClientConn state 
for child %v: %v", cb.name, err)
+               cb.parent.logger.Warnf("failed to update ClientConn state for 
child %v: %v", cb.name, err)
        }
 }
 
diff --git a/xds/balancer/priority/balancer_priority.go 
b/xds/balancer/priority/balancer_priority.go
index eafdbf2da..d7c9c58dd 100644
--- a/xds/balancer/priority/balancer_priority.go
+++ b/xds/balancer/priority/balancer_priority.go
@@ -219,7 +219,7 @@ func (b *priorityBalancer) handleChildStateUpdate(childName 
string, s balancer.S
                // Lower priorities should all be closed, this is an unexpected 
update.
                // Can happen if the child policy sends an update after we tell 
it to
                // close.
-               b.logger.Warningf("priority: received picker update from 
priority %v,  lower than priority in use %v", priority, b.priorityInUse)
+               b.logger.Warnf("priority: received picker update from priority 
%v,  lower than priority in use %v", priority, b.priorityInUse)
                return
        }
 
diff --git a/xds/balancer/priority/logging.go b/xds/balancer/priority/logging.go
deleted file mode 100644
index 438f03da8..000000000
--- a/xds/balancer/priority/logging.go
+++ /dev/null
@@ -1,44 +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.
- */
-
-/*
- *
- * Copyright 2021 gRPC authors.
- *
- */
-
-package priority
-
-import (
-       "fmt"
-)
-
-import (
-       "google.golang.org/grpc/grpclog"
-)
-
-import (
-       internalgrpclog "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
-)
-
-const prefix = "[priority-lb %p] "
-
-var logger = grpclog.Component("xds")
-
-func prefixLogger(p *priorityBalancer) *internalgrpclog.PrefixLogger {
-       return internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(prefix, p))
-}
diff --git a/xds/balancer/ringhash/logging.go b/xds/balancer/ringhash/logging.go
index 56e896ced..9192fbbce 100644
--- a/xds/balancer/ringhash/logging.go
+++ b/xds/balancer/ringhash/logging.go
@@ -23,22 +23,4 @@
 
 package ringhash
 
-import (
-       "fmt"
-)
-
-import (
-       "google.golang.org/grpc/grpclog"
-)
-
-import (
-       internalgrpclog "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
-)
-
 const prefix = "[ring-hash-lb %p] "
-
-var logger = grpclog.Component("xds")
-
-func prefixLogger(p *ringhashBalancer) *internalgrpclog.PrefixLogger {
-       return internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(prefix, p))
-}
diff --git a/xds/balancer/ringhash/picker.go b/xds/balancer/ringhash/picker.go
index b004e3a4b..1d62e5a13 100644
--- a/xds/balancer/ringhash/picker.go
+++ b/xds/balancer/ringhash/picker.go
@@ -38,15 +38,15 @@ import (
 )
 
 import (
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
 )
 
 type picker struct {
        ring   *ring
-       logger *grpclog.PrefixLogger
+       logger dubboLogger.Logger
 }
 
-func newPicker(ring *ring, logger *grpclog.PrefixLogger) *picker {
+func newPicker(ring *ring, logger dubboLogger.Logger) *picker {
        return &picker{ring: ring, logger: logger}
 }
 
diff --git a/xds/balancer/ringhash/ringhash.go 
b/xds/balancer/ringhash/ringhash.go
index 76ff0725d..6ee145d09 100644
--- a/xds/balancer/ringhash/ringhash.go
+++ b/xds/balancer/ringhash/ringhash.go
@@ -44,7 +44,7 @@ import (
 )
 
 import (
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/pretty"
 )
 
@@ -64,7 +64,7 @@ func (bb) Build(cc balancer.ClientConn, bOpts 
balancer.BuildOptions) balancer.Ba
                scStates: make(map[balancer.SubConn]*subConn),
                csEvltr:  &connectivityStateEvaluator{},
        }
-       b.logger = prefixLogger(b)
+       b.logger = dubboLogger.GetLogger()
        b.logger.Infof("Created")
        return b
 }
@@ -173,7 +173,7 @@ func (sc *subConn) queueConnect() {
 
 type ringhashBalancer struct {
        cc     balancer.ClientConn
-       logger *grpclog.PrefixLogger
+       logger dubboLogger.Logger
 
        config *LBConfig
 
@@ -231,7 +231,7 @@ func (b *ringhashBalancer) updateAddresses(addrs 
[]resolver.Address) bool {
                        // (like creds) will be used.
                        sc, err := b.cc.NewSubConn([]resolver.Address{a}, 
balancer.NewSubConnOptions{HealthCheckEnabled: true})
                        if err != nil {
-                               logger.Warningf("base.baseBalancer: failed to 
create new SubConn: %v", err)
+                               dubboLogger.Warnf("base.baseBalancer: failed to 
create new SubConn: %v", err)
                                continue
                        }
                        scs := &subConn{addr: a.Addr, sc: sc}
diff --git a/xds/client/authority.go b/xds/client/authority.go
index 518d04dfc..e15580f6e 100644
--- a/xds/client/authority.go
+++ b/xds/client/authority.go
@@ -33,6 +33,7 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client/bootstrap"
        "dubbo.apache.org/dubbo-go/v3/xds/client/load"
        "dubbo.apache.org/dubbo-go/v3/xds/client/pubsub"
@@ -71,6 +72,9 @@ func (c *clientImpl) findAuthority(n *resource.Name) (_ 
*authority, unref func()
 
        a, err := c.newAuthority(config)
        if err != nil {
+               dubboLogger.Errorf(`[XDS Authority] new authority failed with 
error = %s, please makesure you have imported 
+       _ "dubbo.apache.org/dubbo-go/v3/xds/client/controller/version/v2"
+       _ "dubbo.apache.org/dubbo-go/v3/xds/client/controller/version/v3"`, err)
                return nil, nil, fmt.Errorf("xds: failed to connect to the 
control plane for authority %q: %v", authority, err)
        }
        // All returned authority from this function will be used by a watch,
diff --git a/xds/client/bootstrap/bootstrap.go 
b/xds/client/bootstrap/bootstrap.go
index de80feb99..ebb76ba85 100644
--- a/xds/client/bootstrap/bootstrap.go
+++ b/xds/client/bootstrap/bootstrap.go
@@ -47,6 +47,7 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource/version"
        internal2 "dubbo.apache.org/dubbo-go/v3/xds/internal"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/envconfig"
@@ -274,7 +275,7 @@ func bootstrapConfigFromEnvVariable() ([]byte, error) {
                //
                // Note that even if the content is invalid, we don't failover 
to the
                // file content env variable.
-               logger.Debugf("xds: using bootstrap file with name %q", fName)
+               dubboLogger.Debugf("xds: using bootstrap file with name %q", 
fName)
                return bootstrapFileReadFunc(fName)
        }
 
@@ -304,7 +305,7 @@ func NewConfig() (*Config, error) {
        if err != nil {
                return nil, fmt.Errorf("xds: Failed to read bootstrap config: 
%v", err)
        }
-       logger.Debugf("Bootstrap content: %s", data)
+       dubboLogger.Debugf("Bootstrap content: %s", data)
        return NewConfigFromContents(data)
 }
 
@@ -373,7 +374,7 @@ func NewConfigFromContents(data []byte) (*Config, error) {
                        }
                case "client_default_listener_resource_name_template":
                        if !envconfig.XDSFederation {
-                               logger.Warningf("xds: bootstrap field %v is not 
support when Federation is disabled", k)
+                               dubboLogger.Warnf("xds: bootstrap field %v is 
not support when Federation is disabled", k)
                                continue
                        }
                        if err := json.Unmarshal(v, 
&config.ClientDefaultListenerResourceNameTemplate); err != nil {
@@ -381,14 +382,14 @@ func NewConfigFromContents(data []byte) (*Config, error) {
                        }
                case "authorities":
                        if !envconfig.XDSFederation {
-                               logger.Warningf("xds: bootstrap field %v is not 
support when Federation is disabled", k)
+                               dubboLogger.Warnf("xds: bootstrap field %v is 
not support when Federation is disabled", k)
                                continue
                        }
                        if err := json.Unmarshal(v, &config.Authorities); err 
!= nil {
                                return nil, fmt.Errorf("xds: json.Unmarshal(%v) 
for field %q failed during bootstrap: %v", string(v), k, err)
                        }
                default:
-                       logger.Warningf("Bootstrap content has unknown field: 
%s", k)
+                       dubboLogger.Warnf("Bootstrap content has unknown field: 
%s", k)
                }
                // Do not fail the xDS bootstrap when an unknown field is seen. 
This can
                // happen when an older version client reads a newer version 
bootstrap
@@ -425,7 +426,7 @@ func NewConfigFromContents(data []byte) (*Config, error) {
        if err := config.updateNodeProto(node); err != nil {
                return nil, err
        }
-       logger.Infof("Bootstrap config for creating xds-client: %v", 
pretty.ToJSON(config))
+       dubboLogger.Infof("Bootstrap config for creating xds-client: %v", 
pretty.ToJSON(config))
        return config, nil
 }
 
diff --git a/xds/client/bootstrap/logging.go b/xds/client/bootstrap/logging.go
index 0dc023e25..530f1a528 100644
--- a/xds/client/bootstrap/logging.go
+++ b/xds/client/bootstrap/logging.go
@@ -23,14 +23,4 @@
 
 package bootstrap
 
-import (
-       "google.golang.org/grpc/grpclog"
-)
-
-import (
-       internalgrpclog "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
-)
-
 const prefix = "[xds-bootstrap] "
-
-var logger = internalgrpclog.NewPrefixLogger(grpclog.Component("xds"), prefix)
diff --git a/xds/client/client.go b/xds/client/client.go
index fbf9bfcfd..f1de41027 100644
--- a/xds/client/client.go
+++ b/xds/client/client.go
@@ -36,9 +36,9 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client/bootstrap"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/grpcsync"
        cache "dubbo.apache.org/dubbo-go/v3/xds/utils/xds_cache"
 )
@@ -75,7 +75,7 @@ type clientImpl struct {
        // never both.
        idleAuthorities *cache.TimeoutCache
 
-       logger             *grpclog.PrefixLogger
+       logger             dubboLogger.Logger
        watchExpiryTimeout time.Duration
 }
 
@@ -96,7 +96,7 @@ func newWithConfig(config *bootstrap.Config, 
watchExpiryTimeout time.Duration, i
                }
        }()
 
-       c.logger = prefixLogger(c)
+       c.logger = dubboLogger.GetLogger()
        c.logger.Infof("Created ClientConn to xDS management server: %s", 
config.XDSServer)
 
        c.logger.Infof("Created")
diff --git a/xds/client/controller.go b/xds/client/controller.go
index 29d2cd726..3af5ae408 100644
--- a/xds/client/controller.go
+++ b/xds/client/controller.go
@@ -28,12 +28,12 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client/bootstrap"
        "dubbo.apache.org/dubbo-go/v3/xds/client/controller"
        "dubbo.apache.org/dubbo-go/v3/xds/client/load"
        "dubbo.apache.org/dubbo-go/v3/xds/client/pubsub"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
 )
 
 type controllerInterface interface {
@@ -44,6 +44,6 @@ type controllerInterface interface {
        Close()
 }
 
-var newController = func(config *bootstrap.ServerConfig, pubsub 
*pubsub.Pubsub, validator resource.UpdateValidatorFunc, logger 
*grpclog.PrefixLogger) (controllerInterface, error) {
+var newController = func(config *bootstrap.ServerConfig, pubsub 
*pubsub.Pubsub, validator resource.UpdateValidatorFunc, logger 
dubboLogger.Logger) (controllerInterface, error) {
        return controller.New(config, pubsub, validator, logger)
 }
diff --git a/xds/client/controller/controller.go 
b/xds/client/controller/controller.go
index eb167d7eb..6f45b94a3 100644
--- a/xds/client/controller/controller.go
+++ b/xds/client/controller/controller.go
@@ -47,13 +47,13 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client/bootstrap"
        "dubbo.apache.org/dubbo-go/v3/xds/client/controller/version"
        "dubbo.apache.org/dubbo-go/v3/xds/client/pubsub"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/backoff"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/buffer"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
 )
 
 // Controller manages the connection and stream to the control plane.
@@ -67,7 +67,7 @@ type Controller struct {
        config          *bootstrap.ServerConfig
        updateHandler   pubsub.UpdateHandler
        updateValidator resource.UpdateValidatorFunc
-       logger          *grpclog.PrefixLogger
+       logger          dubboLogger.Logger
 
        cc               *grpc.ClientConn // Connection to the management 
server.
        vClient          version.MetadataWrappedVersionClient
@@ -104,7 +104,7 @@ type Controller struct {
 }
 
 // New creates a new controller.
-func New(config *bootstrap.ServerConfig, updateHandler pubsub.UpdateHandler, 
validator resource.UpdateValidatorFunc, logger *grpclog.PrefixLogger) (_ 
*Controller, retErr error) {
+func New(config *bootstrap.ServerConfig, updateHandler pubsub.UpdateHandler, 
validator resource.UpdateValidatorFunc, logger dubboLogger.Logger) (_ 
*Controller, retErr error) {
        switch {
        case config == nil:
                return nil, errors.New("xds: no xds_server provided")
@@ -128,13 +128,13 @@ func New(config *bootstrap.ServerConfig, updateHandler 
pubsub.UpdateHandler, val
                config:          config,
                updateValidator: validator,
                updateHandler:   updateHandler,
-
-               backoff:    backoff.DefaultExponential.Backoff, // TODO: should 
this be configurable?
-               streamCh:   make(chan grpc.ClientStream, 1),
-               sendCh:     buffer.NewUnbounded(),
-               watchMap:   make(map[resource.ResourceType]map[string]bool),
-               versionMap: make(map[resource.ResourceType]string),
-               nonceMap:   make(map[resource.ResourceType]string),
+               logger:          logger,
+               backoff:         backoff.DefaultExponential.Backoff, // TODO: 
should this be configurable?
+               streamCh:        make(chan grpc.ClientStream, 1),
+               sendCh:          buffer.NewUnbounded(),
+               watchMap:        
make(map[resource.ResourceType]map[string]bool),
+               versionMap:      make(map[resource.ResourceType]string),
+               nonceMap:        make(map[resource.ResourceType]string),
 
                lrsClients: make(map[string]*lrsClient),
        }
diff --git a/xds/client/controller/transport.go 
b/xds/client/controller/transport.go
index 926f0dda9..a1e230d49 100644
--- a/xds/client/controller/transport.go
+++ b/xds/client/controller/transport.go
@@ -93,7 +93,7 @@ func (t *Controller) run(ctx context.Context) {
                stream, err := t.vClient.NewStream(ctx, t.cc)
                if err != nil {
                        t.updateHandler.NewConnectionError(err)
-                       t.logger.Warningf("xds: ADS stream creation failed: 
%v", err)
+                       t.logger.Warnf("xds: ADS stream creation failed: %v", 
err)
                        continue
                }
                t.logger.Infof("ADS stream created")
@@ -163,7 +163,7 @@ func (t *Controller) send(ctx context.Context) {
                                continue
                        }
                        if err := t.vClient.SendRequest(stream, target, rType, 
version, nonce, errMsg); err != nil {
-                               t.logger.Warningf("ADS request for {target: %q, 
type: %v, version: %q, nonce: %q} failed: %v", target, rType, version, nonce, 
err)
+                               t.logger.Warnf("ADS request for {target: %q, 
type: %v, version: %q, nonce: %q} failed: %v", target, rType, version, nonce, 
err)
                                // send failed, clear the current stream.
                                stream = nil
                        }
@@ -188,7 +188,7 @@ func (t *Controller) sendExisting(stream grpc.ClientStream) 
bool {
 
        for rType, s := range t.watchMap {
                if err := t.vClient.SendRequest(stream, mapToSlice(s), rType, 
"", "", ""); err != nil {
-                       t.logger.Warningf("ADS request failed: %v", err)
+                       t.logger.Warnf("ADS request failed: %v", err)
                        return false
                }
        }
@@ -204,14 +204,14 @@ func (t *Controller) recv(stream grpc.ClientStream) bool {
                resp, err := t.vClient.RecvResponse(stream)
                if err != nil {
                        t.updateHandler.NewConnectionError(err)
-                       t.logger.Warningf("ADS stream is closed with error: 
%v", err)
+                       t.logger.Warnf("ADS stream is closed with error: %v", 
err)
                        return success
                }
 
                rType, version, nonce, err := t.handleResponse(resp)
 
                if e, ok := err.(resourceversion.ErrResourceTypeUnsupported); 
ok {
-                       t.logger.Warningf("%s", e.ErrStr)
+                       t.logger.Warnf("%s", e.ErrStr)
                        continue
                }
                if err != nil {
@@ -222,7 +222,7 @@ func (t *Controller) recv(stream grpc.ClientStream) bool {
                                errMsg:  err.Error(),
                                stream:  stream,
                        })
-                       t.logger.Warningf("Sending NACK for response type: %v, 
version: %v, nonce: %v, reason: %v", rType, version, nonce, err)
+                       t.logger.Warnf("Sending NACK for response type: %v, 
version: %v, nonce: %v, reason: %v", rType, version, nonce, err)
                        continue
                }
                t.sendCh.Put(&ackAction{
@@ -402,19 +402,19 @@ func (t *Controller) reportLoad(ctx context.Context, cc 
*grpc.ClientConn, opts c
                retries++
                stream, err := t.vClient.NewLoadStatsStream(ctx, cc)
                if err != nil {
-                       t.logger.Warningf("lrs: failed to create stream: %v", 
err)
+                       t.logger.Warnf("lrs: failed to create stream: %v", err)
                        continue
                }
                t.logger.Infof("lrs: created LRS stream")
 
                if err = t.vClient.SendFirstLoadStatsRequest(stream); err != 
nil {
-                       t.logger.Warningf("lrs: failed to send first request: 
%v", err)
+                       t.logger.Warnf("lrs: failed to send first request: %v", 
err)
                        continue
                }
 
                clusters, interval, err := 
t.vClient.HandleLoadStatsResponse(stream)
                if err != nil {
-                       t.logger.Warningf("%v", err)
+                       t.logger.Warnf("%v", err)
                        continue
                }
 
@@ -433,7 +433,7 @@ func (t *Controller) sendLoads(ctx context.Context, stream 
grpc.ClientStream, st
                        return
                }
                if err := t.vClient.SendLoadStatsRequest(stream, 
store.Stats(clusterNames)); err != nil {
-                       t.logger.Warningf("%v", err)
+                       t.logger.Warnf("%v", err)
                        return
                }
        }
diff --git a/xds/client/controller/version/v2/client.go 
b/xds/client/controller/version/v2/client.go
index ca44ed2f8..db17af055 100644
--- a/xds/client/controller/version/v2/client.go
+++ b/xds/client/controller/version/v2/client.go
@@ -46,10 +46,10 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        controllerversion 
"dubbo.apache.org/dubbo-go/v3/xds/client/controller/version"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource"
        resourceversion 
"dubbo.apache.org/dubbo-go/v3/xds/client/resource/version"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/pretty"
 )
 
@@ -71,7 +71,7 @@ func newClient(opts controllerversion.BuildOptions) 
(controllerversion.MetadataW
        if !ok {
                return nil, fmt.Errorf("xds: unsupported Node proto type: %T, 
want %T", opts.NodeProto, (*v2corepb.Node)(nil))
        }
-       v2c := &client{nodeProto: nodeProto, logger: opts.Logger}
+       v2c := &client{nodeProto: nodeProto, logger: dubboLogger.GetLogger()}
        return v2c, nil
 }
 
@@ -82,7 +82,7 @@ type adsStream 
v2adsgrpc.AggregatedDiscoveryService_StreamAggregatedResourcesCli
 // are multiplexed.
 type client struct {
        nodeProto *v2corepb.Node
-       logger    *grpclog.PrefixLogger
+       logger    dubboLogger.Logger
 }
 
 // SetMetadata update client metadata
diff --git a/xds/client/controller/version/v3/client.go 
b/xds/client/controller/version/v3/client.go
index 4f3e2f49d..b20a40905 100644
--- a/xds/client/controller/version/v3/client.go
+++ b/xds/client/controller/version/v3/client.go
@@ -46,10 +46,10 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        controllerversion 
"dubbo.apache.org/dubbo-go/v3/xds/client/controller/version"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource"
        resourceversion 
"dubbo.apache.org/dubbo-go/v3/xds/client/resource/version"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/pretty"
 )
 
@@ -72,7 +72,7 @@ func newClient(opts controllerversion.BuildOptions) 
(controllerversion.MetadataW
                return nil, fmt.Errorf("xds: unsupported Node proto type: %T, 
want %T", opts.NodeProto, v3corepb.Node{})
        }
        v3c := &client{
-               nodeProto: nodeProto, logger: opts.Logger,
+               nodeProto: nodeProto, logger: dubboLogger.GetLogger(),
        }
        return v3c, nil
 }
@@ -84,7 +84,7 @@ type adsStream 
v3adsgrpc.AggregatedDiscoveryService_StreamAggregatedResourcesCli
 // are multiplexed.
 type client struct {
        nodeProto *v3corepb.Node
-       logger    *grpclog.PrefixLogger
+       logger    dubboLogger.Logger
 }
 
 func (v3c *client) NewStream(ctx context.Context, cc *grpc.ClientConn) 
(grpc.ClientStream, error) {
diff --git a/xds/client/controller/version/version.go 
b/xds/client/controller/version/version.go
index 38a91a9e7..43262668a 100644
--- a/xds/client/controller/version/version.go
+++ b/xds/client/controller/version/version.go
@@ -39,10 +39,10 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client/load"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource/version"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
 )
 
 var (
@@ -77,7 +77,7 @@ type BuildOptions struct {
        // // streams.
        // Backoff func(int) time.Duration
        // Logger provides enhanced logging capabilities.
-       Logger *grpclog.PrefixLogger
+       Logger dubboLogger.Logger
 }
 
 // LoadReportingOptions contains configuration knobs for reporting load data.
diff --git a/xds/client/logging.go b/xds/client/logging.go
deleted file mode 100644
index 0f94d5582..000000000
--- a/xds/client/logging.go
+++ /dev/null
@@ -1,44 +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.
- */
-
-/*
- *
- * Copyright 2021 gRPC authors.
- *
- */
-
-package client
-
-import (
-       "fmt"
-)
-
-import (
-       "google.golang.org/grpc/grpclog"
-)
-
-import (
-       internalgrpclog "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
-)
-
-const prefix = "[xds-client %p] "
-
-var logger = grpclog.Component("xds")
-
-func prefixLogger(p *clientImpl) *internalgrpclog.PrefixLogger {
-       return internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(prefix, p))
-}
diff --git a/xds/client/pubsub/pubsub.go b/xds/client/pubsub/pubsub.go
index 7318321bb..70deddc3b 100644
--- a/xds/client/pubsub/pubsub.go
+++ b/xds/client/pubsub/pubsub.go
@@ -34,9 +34,9 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/buffer"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/grpcsync"
 )
 
@@ -47,7 +47,7 @@ import (
 // any time.
 type Pubsub struct {
        done               *grpcsync.Event
-       logger             *grpclog.PrefixLogger
+       logger             dubboLogger.Logger
        watchExpiryTimeout time.Duration
 
        updateCh *buffer.Unbounded // chan *watcherInfoWithUpdate
@@ -68,7 +68,7 @@ type Pubsub struct {
 }
 
 // New creates a new Pubsub.
-func New(watchExpiryTimeout time.Duration, logger *grpclog.PrefixLogger) 
*Pubsub {
+func New(watchExpiryTimeout time.Duration, logger dubboLogger.Logger) *Pubsub {
        pb := &Pubsub{
                done:               grpcsync.NewEvent(),
                logger:             logger,
diff --git a/xds/client/resource/filter_chain.go 
b/xds/client/resource/filter_chain.go
index 6ee865944..afcb7c502 100644
--- a/xds/client/resource/filter_chain.go
+++ b/xds/client/resource/filter_chain.go
@@ -39,10 +39,10 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource/version"
        "dubbo.apache.org/dubbo-go/v3/xds/httpfilter"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/envconfig"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/resolver"
 )
 
@@ -189,7 +189,7 @@ const (
 // 7. Source IP address.
 // 8. Source port.
 type FilterChainManager struct {
-       logger *grpclog.PrefixLogger
+       logger dubboLogger.Logger
        // Destination prefix is the first match criteria that we support.
        // Therefore, this multi-stage map is indexed on destination prefixes
        // specified in the match criteria.
@@ -260,7 +260,7 @@ type sourcePrefixEntry struct {
 //
 // This function is only exported so that tests outside of this package can
 // create a FilterChainManager.
-func NewFilterChainManager(lis *v3listenerpb.Listener, logger 
*grpclog.PrefixLogger) (*FilterChainManager, error) {
+func NewFilterChainManager(lis *v3listenerpb.Listener, logger 
dubboLogger.Logger) (*FilterChainManager, error) {
        // Parse all the filter chains and build the internal data structures.
        fci := &FilterChainManager{
                logger:           logger,
@@ -317,7 +317,7 @@ func (fci *FilterChainManager) addFilterChains(fcs 
[]*v3listenerpb.FilterChain)
                if fcm.GetDestinationPort().GetValue() != 0 {
                        // Destination port is the first match criteria and we 
do not
                        // support filter chains which contains this match 
criteria.
-                       fci.logger.Warningf("Dropping filter chain %+v since it 
contains unsupported destination_port match field", fc)
+                       fci.logger.Warnf("Dropping filter chain %+v since it 
contains unsupported destination_port match field", fc)
                        continue
                }
 
@@ -366,7 +366,7 @@ func (fci *FilterChainManager) 
addFilterChainsForServerNames(dstEntry *destPrefi
        // Filter chains specifying server names in their match criteria always 
fail
        // a match at connection time. So, these filter chains can be dropped 
now.
        if len(fc.GetFilterChainMatch().GetServerNames()) != 0 {
-               fci.logger.Warningf("Dropping filter chain %+v since it 
contains unsupported server_names match field", fc)
+               fci.logger.Warnf("Dropping filter chain %+v since it contains 
unsupported server_names match field", fc)
                return nil
        }
 
@@ -379,13 +379,13 @@ func (fci *FilterChainManager) 
addFilterChainsForTransportProtocols(dstEntry *de
        case tp != "" && tp != "raw_buffer":
                // Only allow filter chains with transport protocol set to 
empty string
                // or "raw_buffer".
-               fci.logger.Warningf("Dropping filter chain %+v since it 
contains unsupported value for transport_protocols match field", fc)
+               fci.logger.Warnf("Dropping filter chain %+v since it contains 
unsupported value for transport_protocols match field", fc)
                return nil
        case tp == "" && dstEntry.rawBufferSeen:
                // If we have already seen filter chains with transport 
protocol set to
                // "raw_buffer", we can drop filter chains with transport 
protocol set
                // to empty string, since the former takes precedence.
-               fci.logger.Warningf("Dropping filter chain %+v since it 
contains unsupported value for transport_protocols match field", fc)
+               fci.logger.Warnf("Dropping filter chain %+v since it contains 
unsupported value for transport_protocols match field", fc)
                return nil
        case tp != "" && !dstEntry.rawBufferSeen:
                // This is the first "raw_buffer" that we are seeing. Set the 
bit and
@@ -399,7 +399,7 @@ func (fci *FilterChainManager) 
addFilterChainsForTransportProtocols(dstEntry *de
 
 func (fci *FilterChainManager) addFilterChainsForApplicationProtocols(dstEntry 
*destPrefixEntry, fc *v3listenerpb.FilterChain) error {
        if len(fc.GetFilterChainMatch().GetApplicationProtocols()) != 0 {
-               fci.logger.Warningf("Dropping filter chain %+v since it 
contains unsupported application_protocols match field", fc)
+               fci.logger.Warnf("Dropping filter chain %+v since it contains 
unsupported application_protocols match field", fc)
                return nil
        }
        return fci.addFilterChainsForSourceType(dstEntry, fc)
diff --git a/xds/client/resource/unmarshal.go b/xds/client/resource/unmarshal.go
index 23a2d50e5..b643651b5 100644
--- a/xds/client/resource/unmarshal.go
+++ b/xds/client/resource/unmarshal.go
@@ -37,7 +37,7 @@ import (
 )
 
 import (
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
 )
 
 // UnmarshalOptions wraps the input parameters for `UnmarshalXxx` functions.
@@ -47,7 +47,7 @@ type UnmarshalOptions struct {
        // Resources are the xDS resources resources in the received response.
        Resources []*anypb.Any
        // Logger is the prefix logger to be used during unmarshaling.
-       Logger *grpclog.PrefixLogger
+       Logger dubboLogger.Logger
        // UpdateValidator is a post unmarshal validation check provided by the
        // upper layer.
        UpdateValidator UpdateValidatorFunc
diff --git a/xds/client/resource/unmarshal_cds.go 
b/xds/client/resource/unmarshal_cds.go
index 2023d3170..aa909d608 100644
--- a/xds/client/resource/unmarshal_cds.go
+++ b/xds/client/resource/unmarshal_cds.go
@@ -42,9 +42,9 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource/version"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/envconfig"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/matcher"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/pretty"
 )
@@ -62,7 +62,7 @@ func UnmarshalCluster(opts *UnmarshalOptions) 
(map[string]ClusterUpdateErrTuple,
        return update, md, err
 }
 
-func unmarshalClusterResource(r *anypb.Any, f UpdateValidatorFunc, logger 
*grpclog.PrefixLogger) (string, ClusterUpdate, error) {
+func unmarshalClusterResource(r *anypb.Any, f UpdateValidatorFunc, logger 
dubboLogger.Logger) (string, ClusterUpdate, error) {
        if !IsClusterResource(r.GetTypeUrl()) {
                return "", ClusterUpdate{}, fmt.Errorf("unexpected resource 
type: %q ", r.GetTypeUrl())
        }
@@ -71,7 +71,7 @@ func unmarshalClusterResource(r *anypb.Any, f 
UpdateValidatorFunc, logger *grpcl
        if err := proto.Unmarshal(r.GetValue(), cluster); err != nil {
                return "", ClusterUpdate{}, fmt.Errorf("failed to unmarshal 
resource: %v", err)
        }
-       logger.Infof("Resource with name: %v, type: %T, contains: %v", 
cluster.GetName(), cluster, pretty.ToJSON(cluster))
+       dubboLogger.Debugf("Resource with name: %v, type: %T, contains: %v", 
cluster.GetName(), cluster, pretty.ToJSON(cluster))
        cu, err := validateClusterAndConstructClusterUpdate(cluster)
        if err != nil {
                return cluster.GetName(), ClusterUpdate{}, err
diff --git a/xds/client/resource/unmarshal_eds.go 
b/xds/client/resource/unmarshal_eds.go
index 93068fe04..23132e903 100644
--- a/xds/client/resource/unmarshal_eds.go
+++ b/xds/client/resource/unmarshal_eds.go
@@ -40,7 +40,7 @@ import (
 )
 
 import (
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/pretty"
 )
 
@@ -53,7 +53,7 @@ func UnmarshalEndpoints(opts *UnmarshalOptions) 
(map[string]EndpointsUpdateErrTu
        return update, md, err
 }
 
-func unmarshalEndpointsResource(r *anypb.Any, logger *grpclog.PrefixLogger) 
(string, EndpointsUpdate, error) {
+func unmarshalEndpointsResource(r *anypb.Any, logger dubboLogger.Logger) 
(string, EndpointsUpdate, error) {
        if !IsEndpointsResource(r.GetTypeUrl()) {
                return "", EndpointsUpdate{}, fmt.Errorf("unexpected resource 
type: %q ", r.GetTypeUrl())
        }
@@ -62,7 +62,7 @@ func unmarshalEndpointsResource(r *anypb.Any, logger 
*grpclog.PrefixLogger) (str
        if err := proto.Unmarshal(r.GetValue(), cla); err != nil {
                return "", EndpointsUpdate{}, fmt.Errorf("failed to unmarshal 
resource: %v", err)
        }
-       logger.Infof("Resource with name: %v, type: %T, contains: %v", 
cla.GetClusterName(), cla, pretty.ToJSON(cla))
+       dubboLogger.Debugf("Resource with name: %v, type: %T, contains: %v", 
cla.GetClusterName(), cla, pretty.ToJSON(cla))
 
        u, err := parseEDSRespProto(cla)
        if err != nil {
diff --git a/xds/client/resource/unmarshal_lds.go 
b/xds/client/resource/unmarshal_lds.go
index 258dc3ac5..011b4593f 100644
--- a/xds/client/resource/unmarshal_lds.go
+++ b/xds/client/resource/unmarshal_lds.go
@@ -45,9 +45,9 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource/version"
        "dubbo.apache.org/dubbo-go/v3/xds/httpfilter"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/pretty"
 )
 
@@ -60,7 +60,7 @@ func UnmarshalListener(opts *UnmarshalOptions) 
(map[string]ListenerUpdateErrTupl
        return update, md, err
 }
 
-func unmarshalListenerResource(r *anypb.Any, f UpdateValidatorFunc, logger 
*grpclog.PrefixLogger) (string, ListenerUpdate, error) {
+func unmarshalListenerResource(r *anypb.Any, f UpdateValidatorFunc, logger 
dubboLogger.Logger) (string, ListenerUpdate, error) {
        if !IsListenerResource(r.GetTypeUrl()) {
                return "", ListenerUpdate{}, fmt.Errorf("unexpected resource 
type: %q ", r.GetTypeUrl())
        }
@@ -70,7 +70,7 @@ func unmarshalListenerResource(r *anypb.Any, f 
UpdateValidatorFunc, logger *grpc
        if err := proto.Unmarshal(r.GetValue(), lis); err != nil {
                return "", ListenerUpdate{}, fmt.Errorf("failed to unmarshal 
resource: %v", err)
        }
-       logger.Infof("Resource with name: %v, type: %T, contains: %v", 
lis.GetName(), lis, pretty.ToJSON(lis))
+       dubboLogger.Debugf("Resource with name: %v, type: %T, contains: %v", 
lis.GetName(), lis, pretty.ToJSON(lis))
 
        lu, err := processListener(lis, logger, v2)
        if err != nil {
@@ -85,7 +85,7 @@ func unmarshalListenerResource(r *anypb.Any, f 
UpdateValidatorFunc, logger *grpc
        return lis.GetName(), *lu, nil
 }
 
-func processListener(lis *v3listenerpb.Listener, logger *grpclog.PrefixLogger, 
v2 bool) (*ListenerUpdate, error) {
+func processListener(lis *v3listenerpb.Listener, logger dubboLogger.Logger, v2 
bool) (*ListenerUpdate, error) {
        if lis.GetApiListener() != nil {
                return processClientSideListener(lis, logger, v2)
        }
@@ -94,7 +94,7 @@ func processListener(lis *v3listenerpb.Listener, logger 
*grpclog.PrefixLogger, v
 
 // processClientSideListener checks if the provided Listener proto meets
 // the expected criteria. If so, it returns a non-empty routeConfigName.
-func processClientSideListener(lis *v3listenerpb.Listener, logger 
*grpclog.PrefixLogger, v2 bool) (*ListenerUpdate, error) {
+func processClientSideListener(lis *v3listenerpb.Listener, logger 
dubboLogger.Logger, v2 bool) (*ListenerUpdate, error) {
        update := &ListenerUpdate{}
 
        apiLisAny := lis.GetApiListener().GetApiListener()
@@ -281,7 +281,7 @@ func processHTTPFilters(filters []*v3httppb.HttpFilter, 
server bool) ([]HTTPFilt
        return ret, nil
 }
 
-func processServerSideListener(lis *v3listenerpb.Listener, logger 
*grpclog.PrefixLogger) (*ListenerUpdate, error) {
+func processServerSideListener(lis *v3listenerpb.Listener, logger 
dubboLogger.Logger) (*ListenerUpdate, error) {
        if n := len(lis.ListenerFilters); n != 0 {
                return nil, fmt.Errorf("unsupported field 'listener_filters' 
contains %d entries", n)
        }
diff --git a/xds/client/resource/unmarshal_rds.go 
b/xds/client/resource/unmarshal_rds.go
index 7813cbdc1..3cf346da7 100644
--- a/xds/client/resource/unmarshal_rds.go
+++ b/xds/client/resource/unmarshal_rds.go
@@ -42,10 +42,10 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource/version"
        "dubbo.apache.org/dubbo-go/v3/xds/clusterspecifier"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/envconfig"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/pretty"
 )
 
@@ -59,7 +59,7 @@ func UnmarshalRouteConfig(opts *UnmarshalOptions) 
(map[string]RouteConfigUpdateE
        return update, md, err
 }
 
-func unmarshalRouteConfigResource(r *anypb.Any, logger *grpclog.PrefixLogger) 
(string, RouteConfigUpdate, error) {
+func unmarshalRouteConfigResource(r *anypb.Any, logger dubboLogger.Logger) 
(string, RouteConfigUpdate, error) {
        if !IsRouteConfigResource(r.GetTypeUrl()) {
                return "", RouteConfigUpdate{}, fmt.Errorf("unexpected resource 
type: %q ", r.GetTypeUrl())
        }
@@ -67,7 +67,7 @@ func unmarshalRouteConfigResource(r *anypb.Any, logger 
*grpclog.PrefixLogger) (s
        if err := proto.Unmarshal(r.GetValue(), rc); err != nil {
                return "", RouteConfigUpdate{}, fmt.Errorf("failed to unmarshal 
resource: %v", err)
        }
-       logger.Infof("Resource with name: %v, type: %T, contains: %v.", 
rc.GetName(), rc, pretty.ToJSON(rc))
+       dubboLogger.Debugf("Resource with name: %v, type: %T, contains: %v.", 
rc.GetName(), rc, pretty.ToJSON(rc))
 
        // TODO: Pass version.TransportAPI instead of relying upon the type URL
        v2 := r.GetTypeUrl() == version.V2RouteConfigURL
@@ -95,7 +95,7 @@ func unmarshalRouteConfigResource(r *anypb.Any, logger 
*grpclog.PrefixLogger) (s
 // field must be empty and whose route field must be set.  Inside that route
 // message, the cluster field will contain the clusterName or weighted clusters
 // we are looking for.
-func generateRDSUpdateFromRouteConfiguration(rc *v3routepb.RouteConfiguration, 
logger *grpclog.PrefixLogger, v2 bool) (RouteConfigUpdate, error) {
+func generateRDSUpdateFromRouteConfiguration(rc *v3routepb.RouteConfiguration, 
logger dubboLogger.Logger, v2 bool) (RouteConfigUpdate, error) {
        vhs := make([]*VirtualHost, 0, len(rc.GetVirtualHosts()))
        csps := make(map[string]clusterspecifier.BalancerConfig)
        if envconfig.XDSRLS {
@@ -230,7 +230,7 @@ func generateRetryConfig(rp *v3routepb.RetryPolicy) 
(*RetryConfig, error) {
        return cfg, nil
 }
 
-func routesProtoToSlice(routes []*v3routepb.Route, csps 
map[string]clusterspecifier.BalancerConfig, logger *grpclog.PrefixLogger, v2 
bool) ([]*Route, map[string]bool, error) {
+func routesProtoToSlice(routes []*v3routepb.Route, csps 
map[string]clusterspecifier.BalancerConfig, logger dubboLogger.Logger, v2 bool) 
([]*Route, map[string]bool, error) {
        var routesRet []*Route
        var cspNames = make(map[string]bool)
        for _, r := range routes {
@@ -241,7 +241,7 @@ func routesProtoToSlice(routes []*v3routepb.Route, csps 
map[string]clusterspecif
 
                if len(match.GetQueryParameters()) != 0 {
                        // Ignore route with query parameters.
-                       logger.Warningf("route %+v has query parameter 
matchers, the route will be ignored", r)
+                       logger.Warnf("route %+v has query parameter matchers, 
the route will be ignored", r)
                        continue
                }
 
@@ -421,7 +421,7 @@ func routesProtoToSlice(routes []*v3routepb.Route, csps 
map[string]clusterspecif
        return routesRet, cspNames, nil
 }
 
-func hashPoliciesProtoToSlice(policies []*v3routepb.RouteAction_HashPolicy, 
logger *grpclog.PrefixLogger) ([]*HashPolicy, error) {
+func hashPoliciesProtoToSlice(policies []*v3routepb.RouteAction_HashPolicy, 
logger dubboLogger.Logger) ([]*HashPolicy, error) {
        var hashPoliciesRet []*HashPolicy
        for _, p := range policies {
                policy := HashPolicy{Terminal: p.Terminal}
diff --git a/xds/csds/csds.go b/xds/csds/csds.go
index 8d5fce22e..f5172a397 100644
--- a/xds/csds/csds.go
+++ b/xds/csds/csds.go
@@ -44,14 +44,13 @@ import (
 
        "google.golang.org/grpc/codes"
 
-       "google.golang.org/grpc/grpclog"
-
        "google.golang.org/grpc/status"
 
        "google.golang.org/protobuf/types/known/timestamppb"
 )
 
 import (
+       "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client"
        _ "dubbo.apache.org/dubbo-go/v3/xds/client/controller/version/v2" // 
Register v2 xds_client.
        _ "dubbo.apache.org/dubbo-go/v3/xds/client/controller/version/v3" // 
Register v3 xds_client.
@@ -59,11 +58,10 @@ import (
 )
 
 var (
-       logger       = grpclog.Component("xds")
        newXDSClient = func() client.XDSClient {
                c, err := client.New()
                if err != nil {
-                       logger.Warningf("failed to create xds client: %v", err)
+                       logger.Warnf("failed to create xds client: %v", err)
                        return nil
                }
                return c
@@ -175,15 +173,15 @@ func nodeProtoToV3(n proto.Message) *v3corepb.Node {
        case *v2corepb.Node:
                v2, err := proto.Marshal(nn)
                if err != nil {
-                       logger.Warningf("Failed to marshal node (%v): %v", n, 
err)
+                       logger.Warnf("Failed to marshal node (%v): %v", n, err)
                        break
                }
                node = new(v3corepb.Node)
                if err := proto.Unmarshal(v2, node); err != nil {
-                       logger.Warningf("Failed to unmarshal node (%v): %v", 
v2, err)
+                       logger.Warnf("Failed to unmarshal node (%v): %v", v2, 
err)
                }
        default:
-               logger.Warningf("node from bootstrap is %#v, only v2.Node and 
v3.Node are supported", nn)
+               logger.Warnf("node from bootstrap is %#v, only v2.Node and 
v3.Node are supported", nn)
        }
        return node
 }
diff --git a/xds/resolver/logging.go b/xds/resolver/logging.go
deleted file mode 100644
index 35006edb4..000000000
--- a/xds/resolver/logging.go
+++ /dev/null
@@ -1,44 +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.
- */
-
-/*
- *
- * Copyright 2020 gRPC authors.
- *
- */
-
-package resolver
-
-import (
-       "fmt"
-)
-
-import (
-       "google.golang.org/grpc/grpclog"
-)
-
-import (
-       internalgrpclog "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
-)
-
-const prefix = "[xds-resolver %p] "
-
-var logger = grpclog.Component("xds")
-
-func prefixLogger(p *xdsResolver) *internalgrpclog.PrefixLogger {
-       return internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(prefix, p))
-}
diff --git a/xds/resolver/watch_service.go b/xds/resolver/watch_service.go
index 3ef4f844b..7b275f4c2 100644
--- a/xds/resolver/watch_service.go
+++ b/xds/resolver/watch_service.go
@@ -30,10 +30,10 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource"
        "dubbo.apache.org/dubbo-go/v3/xds/clusterspecifier"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/pretty"
 )
 
@@ -65,7 +65,7 @@ type ldsConfig struct {
 // Note that during race (e.g. an xDS response is received while the user is
 // calling cancel()), there's a small window where the callback can be called
 // after the watcher is canceled. The caller needs to handle this case.
-func watchService(c client.XDSClient, serviceName string, cb 
func(serviceUpdate, error), logger *grpclog.PrefixLogger) (cancel func()) {
+func watchService(c client.XDSClient, serviceName string, cb 
func(serviceUpdate, error), logger dubboLogger.Logger) (cancel func()) {
        w := &serviceUpdateWatcher{
                logger:      logger,
                c:           c,
@@ -80,7 +80,7 @@ func watchService(c client.XDSClient, serviceName string, cb 
func(serviceUpdate,
 // serviceUpdateWatcher handles LDS and RDS response, and calls the service
 // callback at the right time.
 type serviceUpdateWatcher struct {
-       logger      *grpclog.PrefixLogger
+       logger      dubboLogger.Logger
        c           client.XDSClient
        serviceName string
        ldsCancel   func()
diff --git a/xds/resolver/xds_resolver.go b/xds/resolver/xds_resolver.go
index 2d597d1d4..9457c6212 100644
--- a/xds/resolver/xds_resolver.go
+++ b/xds/resolver/xds_resolver.go
@@ -38,10 +38,10 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client"
        "dubbo.apache.org/dubbo-go/v3/xds/client/bootstrap"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource"
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/grpcsync"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/pretty"
        iresolver "dubbo.apache.org/dubbo-go/v3/xds/utils/resolver"
@@ -88,7 +88,7 @@ func (b *xdsResolverBuilder) Build(t resolver.Target, cc 
resolver.ClientConn, op
                        r.Close()
                }
        }()
-       r.logger = prefixLogger(r)
+       r.logger = dubboLogger.GetLogger()
        r.logger.Infof("Creating resolver for target: %+v", t)
 
        newXDSClient := newXDSClient
@@ -181,7 +181,7 @@ type xdsResolver struct {
        cc     resolver.ClientConn
        closed *grpcsync.Event
 
-       logger *grpclog.PrefixLogger
+       logger dubboLogger.Logger
 
        // The underlying xdsClient which performs all xDS requests and 
responses.
        client client.XDSClient
@@ -243,7 +243,7 @@ func (r *xdsResolver) run() {
                        return
                case update := <-r.updateCh:
                        if update.err != nil {
-                               r.logger.Warningf("Watch error on resource %v 
from xds-client %p, %v", r.target.Endpoint, r.client, update.err)
+                               r.logger.Warnf("Watch error on resource %v from 
xds-client %p, %v", r.target.Endpoint, r.client, update.err)
                                if resource.ErrType(update.err) == 
resource.ErrorTypeResourceNotFound {
                                        // If error is resource-not-found, it 
means the LDS
                                        // resource was removed. Ultimately 
send an empty service
@@ -271,7 +271,7 @@ func (r *xdsResolver) run() {
                        // Create the config selector for this update.
                        cs, err := r.newConfigSelector(update.su)
                        if err != nil {
-                               r.logger.Warningf("Error parsing update on 
resource %v from xds-client %p: %v", r.target.Endpoint, r.client, err)
+                               r.logger.Warnf("Error parsing update on 
resource %v from xds-client %p: %v", r.target.Endpoint, r.client, err)
                                r.cc.ReportError(err)
                                continue
                        }
diff --git a/xds/server/listener_wrapper.go b/xds/server/listener_wrapper.go
index 27ffc64bc..cf3d12f92 100644
--- a/xds/server/listener_wrapper.go
+++ b/xds/server/listener_wrapper.go
@@ -44,11 +44,11 @@ import (
 )
 
 import (
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        "dubbo.apache.org/dubbo-go/v3/xds/client/bootstrap"
        "dubbo.apache.org/dubbo-go/v3/xds/client/resource"
        internalbackoff "dubbo.apache.org/dubbo-go/v3/xds/utils/backoff"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/envconfig"
-       internalgrpclog "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
        "dubbo.apache.org/dubbo-go/v3/xds/utils/grpcsync"
 )
 
@@ -78,10 +78,6 @@ type ServingModeCallback func(addr net.Addr, mode 
connectivity.ServingMode, err
 // connections.
 type DrainCallback func(addr net.Addr)
 
-func prefixLogger(p *listenerWrapper) *internalgrpclog.PrefixLogger {
-       return internalgrpclog.NewPrefixLogger(logger, 
fmt.Sprintf("[xds-server-listener %p] ", p))
-}
-
 // XDSClient wraps the methods on the XDSClient which are required by
 // the listenerWrapper.
 type XDSClient interface {
@@ -128,7 +124,7 @@ func NewListenerWrapper(params ListenerWrapperParams) 
(net.Listener, <-chan stru
                ldsUpdateCh: make(chan ldsUpdateWithError, 1),
                rdsUpdateCh: make(chan rdsHandlerUpdate, 1),
        }
-       lw.logger = prefixLogger(lw)
+       lw.logger = dubboLogger.GetLogger()
 
        // Serve() verifies that Addr() returns a valid TCPAddr. So, it is safe 
to
        // ignore the error from SplitHostPort().
@@ -157,7 +153,7 @@ type ldsUpdateWithError struct {
 // particular invocation of Serve().
 type listenerWrapper struct {
        net.Listener
-       logger *internalgrpclog.PrefixLogger
+       logger dubboLogger.Logger
 
        name          string
        xdsCredsInUse bool
@@ -281,7 +277,7 @@ func (l *listenerWrapper) Accept() (net.Conn, error) {
                        // error, `grpc.Serve()` method sleeps for a small 
duration and
                        // therefore ends up blocking all connection attempts 
during that
                        // time frame, which is also not ideal for an error 
like this.
-                       l.logger.Warningf("connection from %s to %s failed to 
find any matching filter chain", conn.RemoteAddr().String(), 
conn.LocalAddr().String())
+                       l.logger.Warnf("connection from %s to %s failed to find 
any matching filter chain", conn.RemoteAddr().String(), 
conn.LocalAddr().String())
                        conn.Close()
                        continue
                }
@@ -313,7 +309,7 @@ func (l *listenerWrapper) Accept() (net.Conn, error) {
                // tradeoff for simplicity.
                vhswi, err := fc.ConstructUsableRouteConfiguration(rc)
                if err != nil {
-                       l.logger.Warningf("route configuration construction: 
%v", err)
+                       l.logger.Warnf("route configuration construction: %v", 
err)
                        conn.Close()
                        continue
                }
@@ -354,7 +350,7 @@ func (l *listenerWrapper) run() {
 // goroutine.
 func (l *listenerWrapper) handleListenerUpdate(update resource.ListenerUpdate, 
err error) {
        if l.closed.HasFired() {
-               l.logger.Warningf("Resource %q received update: %v with error: 
%v, after listener was closed", l.name, update, err)
+               l.logger.Warnf("Resource %q received update: %v with error: %v, 
after listener was closed", l.name, update, err)
                return
        }
        // Remove any existing entry in ldsUpdateCh and replace with the new 
one, as the only update
@@ -371,11 +367,11 @@ func (l *listenerWrapper) handleListenerUpdate(update 
resource.ListenerUpdate, e
 // configuration (both LDS and RDS) has been received.
 func (l *listenerWrapper) handleRDSUpdate(update rdsHandlerUpdate) {
        if l.closed.HasFired() {
-               l.logger.Warningf("RDS received update: %v with error: %v, 
after listener was closed", update.updates, update.err)
+               l.logger.Warnf("RDS received update: %v with error: %v, after 
listener was closed", update.updates, update.err)
                return
        }
        if update.err != nil {
-               l.logger.Warningf("Received error for rds names specified in 
resource %q: %+v", l.name, update.err)
+               l.logger.Warnf("Received error for rds names specified in 
resource %q: %+v", l.name, update.err)
                if resource.ErrType(update.err) == 
resource.ErrorTypeResourceNotFound {
                        l.switchMode(nil, connectivity.ServingModeNotServing, 
update.err)
                }
@@ -391,7 +387,7 @@ func (l *listenerWrapper) handleRDSUpdate(update 
rdsHandlerUpdate) {
 
 func (l *listenerWrapper) handleLDSUpdate(update ldsUpdateWithError) {
        if update.err != nil {
-               l.logger.Warningf("Received error for resource %q: %+v", 
l.name, update.err)
+               l.logger.Warnf("Received error for resource %q: %+v", l.name, 
update.err)
                if resource.ErrType(update.err) == 
resource.ErrorTypeResourceNotFound {
                        l.switchMode(nil, connectivity.ServingModeNotServing, 
update.err)
                }
@@ -450,5 +446,5 @@ func (l *listenerWrapper) switchMode(fcs 
*resource.FilterChainManager, newMode c
        if l.modeCallback != nil {
                l.modeCallback(l.Listener.Addr(), newMode, err)
        }
-       l.logger.Warningf("Listener %q entering mode: %q due to error: %v", 
l.Addr(), newMode, err)
+       l.logger.Warnf("Listener %q entering mode: %q due to error: %v", 
l.Addr(), newMode, err)
 }
diff --git a/xds/utils/balancergroup/balancergroup.go 
b/xds/utils/balancergroup/balancergroup.go
index 2e0dc8660..3f11e9b4f 100644
--- a/xds/utils/balancergroup/balancergroup.go
+++ b/xds/utils/balancergroup/balancergroup.go
@@ -40,7 +40,7 @@ import (
 )
 
 import (
-       "dubbo.apache.org/dubbo-go/v3/xds/utils/grpclog"
+       dubboLogger "dubbo.apache.org/dubbo-go/v3/common/logger"
        cache "dubbo.apache.org/dubbo-go/v3/xds/utils/xds_cache"
 )
 
@@ -206,7 +206,7 @@ func (sbc *subBalancerWrapper) stopBalancer() {
 type BalancerGroup struct {
        cc        balancer.ClientConn
        buildOpts balancer.BuildOptions
-       logger    *grpclog.PrefixLogger
+       logger    dubboLogger.Logger
 
        // stateAggregator is where the state/picker updates will be sent to. 
It's
        // provided by the parent balancer, to build a picker with all the
@@ -261,7 +261,7 @@ var DefaultSubBalancerCloseTimeout = 15 * time.Minute
 
 // New creates a new BalancerGroup. Note that the BalancerGroup
 // needs to be started to work.
-func New(cc balancer.ClientConn, bOpts balancer.BuildOptions, stateAggregator 
BalancerStateAggregator, logger *grpclog.PrefixLogger) *BalancerGroup {
+func New(cc balancer.ClientConn, bOpts balancer.BuildOptions, stateAggregator 
BalancerStateAggregator, logger dubboLogger.Logger) *BalancerGroup {
        return &BalancerGroup{
                cc:              cc,
                buildOpts:       bOpts,
diff --git a/xds/utils/grpclog/grpclog.go b/xds/utils/grpclog/grpclog.go
index b585fbff1..aa7a2d37f 100644
--- a/xds/utils/grpclog/grpclog.go
+++ b/xds/utils/grpclog/grpclog.go
@@ -94,8 +94,8 @@ type LoggerV2 interface {
        Warning(args ...interface{})
        // Warningln logs to WARNING log. Arguments are handled in the manner 
of fmt.Println.
        Warningln(args ...interface{})
-       // Warningf logs to WARNING log. Arguments are handled in the manner of 
fmt.Printf.
-       Warningf(format string, args ...interface{})
+       // Warnf logs to WARNING log. Arguments are handled in the manner of 
fmt.Printf.
+       Warnf(format string, args ...interface{})
        // Error logs to ERROR log. Arguments are handled in the manner of 
fmt.Print.
        Error(args ...interface{})
        // Errorln logs to ERROR log. Arguments are handled in the manner of 
fmt.Println.
diff --git a/xds/utils/grpclog/prefixLogger.go 
b/xds/utils/grpclog/prefixLogger.go
index 46abf112f..6d9c6a0ed 100644
--- a/xds/utils/grpclog/prefixLogger.go
+++ b/xds/utils/grpclog/prefixLogger.go
@@ -46,8 +46,8 @@ func (pl *PrefixLogger) Infof(format string, args 
...interface{}) {
        InfoDepth(1, fmt.Sprintf(format, args...))
 }
 
-// Warningf does warning logging.
-func (pl *PrefixLogger) Warningf(format string, args ...interface{}) {
+// Warnf does warning logging.
+func (pl *PrefixLogger) Warnf(format string, args ...interface{}) {
        if pl != nil {
                format = pl.prefix + format
                pl.logger.WarningDepth(1, fmt.Sprintf(format, args...))
@@ -66,17 +66,6 @@ func (pl *PrefixLogger) Errorf(format string, args 
...interface{}) {
        ErrorDepth(1, fmt.Sprintf(format, args...))
 }
 
-// Debugf does info logging at verbose level 2.
-func (pl *PrefixLogger) Debugf(format string, args ...interface{}) {
-       if pl != nil {
-               // Handle nil, so the tests can pass in a nil logger.
-               format = pl.prefix + format
-               pl.logger.InfoDepth(1, fmt.Sprintf(format, args...))
-               return
-       }
-       InfoDepth(1, fmt.Sprintf(format, args...))
-}
-
 // NewPrefixLogger creates a prefix logger with the given prefix.
 func NewPrefixLogger(logger DepthLoggerV2, prefix string) *PrefixLogger {
        return &PrefixLogger{logger: logger, prefix: prefix}
diff --git a/xds/utils/serviceconfig/serviceconfig.go 
b/xds/utils/serviceconfig/serviceconfig.go
index 79f5f0e53..a9115f571 100644
--- a/xds/utils/serviceconfig/serviceconfig.go
+++ b/xds/utils/serviceconfig/serviceconfig.go
@@ -35,12 +35,12 @@ import (
 
        "google.golang.org/grpc/codes"
 
-       "google.golang.org/grpc/grpclog"
-
        externalserviceconfig "google.golang.org/grpc/serviceconfig"
 )
 
-var logger = grpclog.Component("core")
+import (
+       "dubbo.apache.org/dubbo-go/v3/common/logger"
+)
 
 // BalancerConfig wraps the name and config associated with one load balancing
 // policy. It corresponds to a single entry of the loadBalancingConfig field
@@ -115,7 +115,7 @@ func (bc *BalancerConfig) UnmarshalJSON(b []byte) error {
                parser, ok := builder.(balancer.ConfigParser)
                if !ok {
                        if string(jsonCfg) != "{}" {
-                               logger.Warningf("non-empty balancer 
configuration %q, but balancer does not implement ParseConfig", string(jsonCfg))
+                               logger.Warnf("non-empty balancer configuration 
%q, but balancer does not implement ParseConfig", string(jsonCfg))
                        }
                        // Stop at this, though the builder doesn't support 
parsing config.
                        return nil

Reply via email to