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

alinsran pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-ingress-controller.git


The following commit(s) were added to refs/heads/master by this push:
     new d9550d88 chore: unify the logging component (#2584)
d9550d88 is described below

commit d9550d8887012b63e5803cb281f48b32010158a2
Author: AlinsRan <[email protected]>
AuthorDate: Tue Sep 30 19:06:39 2025 +0800

    chore: unify the logging component (#2584)
---
 cmd/root/root.go                               | 11 ---
 internal/adc/cache/store.go                    | 27 ++++----
 internal/adc/client/client.go                  | 88 ++++++++++++------------
 internal/adc/client/executor.go                | 93 ++++++++++++--------------
 internal/adc/translator/apisixroute.go         |  4 +-
 internal/adc/translator/apisixupstream.go      |  6 +-
 internal/adc/translator/gateway.go             | 23 +++----
 internal/adc/translator/gatewayproxy.go        |  6 +-
 internal/adc/translator/globalrule.go          | 10 +--
 internal/adc/translator/httproute.go           | 10 ++-
 internal/adc/translator/ingressclass.go        |  4 +-
 internal/adc/translator/translator.go          |  2 +-
 internal/controller/apisixroute_controller.go  |  6 +-
 internal/controller/gatewayproxy_controller.go |  2 +-
 internal/controller/grpcroute_controller.go    |  2 +-
 internal/controller/httproute_controller.go    |  6 +-
 internal/controller/ingress_controller.go      |  6 +-
 internal/controller/ingressclass_controller.go |  2 +-
 internal/controller/tcproute_controller.go     |  2 +-
 internal/controller/udproute_controller.go     |  2 +-
 internal/controller/utils.go                   | 32 ++++-----
 internal/manager/readiness/manager.go          | 10 +--
 internal/manager/run.go                        |  7 +-
 internal/provider/apisix/provider.go           | 21 +++---
 internal/provider/apisix/status.go             | 23 +++----
 internal/provider/init/init.go                 | 16 +++--
 internal/provider/options.go                   |  4 +-
 internal/provider/register.go                  | 13 +++-
 28 files changed, 207 insertions(+), 231 deletions(-)

diff --git a/cmd/root/root.go b/cmd/root/root.go
index f9cc71f8..577b0567 100644
--- a/cmd/root/root.go
+++ b/cmd/root/root.go
@@ -38,7 +38,6 @@ import (
        "github.com/apache/apisix-ingress-controller/internal/controller/config"
        "github.com/apache/apisix-ingress-controller/internal/manager"
        "github.com/apache/apisix-ingress-controller/internal/version"
-       "github.com/api7/gopkg/pkg/log"
 )
 
 type GatewayConfigsFlag struct {
@@ -115,16 +114,6 @@ func newAPISIXIngressController() *cobra.Command {
                                return err
                        }
 
-                       l, err := log.NewLogger(
-                               log.WithOutputFile("stderr"),
-                               log.WithLogLevel(cfg.LogLevel),
-                               log.WithSkipFrames(3),
-                       )
-                       if err != nil {
-                               return err
-                       }
-                       log.DefaultLogger = l
-
                        // controllers log
                        core := zapcore.NewCore(
                                
zapcore.NewConsoleEncoder(zap.NewDevelopmentEncoderConfig()),
diff --git a/internal/adc/cache/store.go b/internal/adc/cache/store.go
index 70152266..6c5a1f23 100644
--- a/internal/adc/cache/store.go
+++ b/internal/adc/cache/store.go
@@ -21,9 +21,8 @@ import (
        "fmt"
        "sync"
 
-       "github.com/api7/gopkg/pkg/log"
+       "github.com/go-logr/logr"
        "github.com/google/uuid"
-       "go.uber.org/zap"
 
        adctypes "github.com/apache/apisix-ingress-controller/api/adc"
        "github.com/apache/apisix-ingress-controller/internal/controller/label"
@@ -34,12 +33,14 @@ type Store struct {
        pluginMetadataMap map[string]adctypes.PluginMetadata
 
        sync.Mutex
+       log logr.Logger
 }
 
-func NewStore() *Store {
+func NewStore(log logr.Logger) *Store {
        return &Store{
                cacheMap:          make(map[string]Cache),
                pluginMetadataMap: make(map[string]adctypes.PluginMetadata),
+               log:               log,
        }
 }
 
@@ -55,7 +56,7 @@ func (s *Store) Insert(name string, resourceTypes []string, 
resources *adctypes.
                s.cacheMap[name] = db
                targetCache = s.cacheMap[name]
        }
-       log.Debugw("Inserting resources into cache for", zap.String("name", 
name))
+       s.log.V(1).Info("Inserting resources into cache", "name", name, 
"resourceTypes", resourceTypes, "Labels", Labels)
        selector := &KindLabelSelector{
                Kind:      Labels[label.LabelKind],
                Name:      Labels[label.LabelName],
@@ -162,41 +163,41 @@ func (s *Store) Delete(name string, resourceTypes 
[]string, Labels map[string]st
                case adctypes.TypeService:
                        services, err := targetCache.ListServices(selector)
                        if err != nil {
-                               log.Errorw("failed to list services", 
zap.Error(err))
+                               s.log.Error(err, "failed to list services")
                        }
                        for _, service := range services {
                                if err := targetCache.DeleteService(service); 
err != nil {
-                                       log.Errorw("failed to delete service", 
zap.Error(err), zap.String("service", service.ID))
+                                       s.log.Error(err, "failed to delete 
service", "service", service.ID)
                                }
                        }
                case adctypes.TypeSSL:
                        ssls, err := targetCache.ListSSL(selector)
                        if err != nil {
-                               log.Errorw("failed to list ssl", zap.Error(err))
+                               s.log.Error(err, "failed to list ssl")
                        }
                        for _, ssl := range ssls {
                                if err := targetCache.DeleteSSL(ssl); err != 
nil {
-                                       log.Errorw("failed to delete ssl", 
zap.Error(err), zap.String("ssl", ssl.ID))
+                                       s.log.Error(err, "failed to delete 
ssl", "ssl", ssl.ID)
                                }
                        }
                case adctypes.TypeConsumer:
                        consumers, err := targetCache.ListConsumers(selector)
                        if err != nil {
-                               log.Errorw("failed to list consumers", 
zap.Error(err))
+                               s.log.Error(err, "failed to list consumers")
                        }
                        for _, consumer := range consumers {
                                if err := targetCache.DeleteConsumer(consumer); 
err != nil {
-                                       log.Errorw("failed to delete consumer", 
zap.Error(err), zap.String("consumer", consumer.Username))
+                                       s.log.Error(err, "failed to delete 
consumer", "consumer", consumer.Username)
                                }
                        }
                case adctypes.TypeGlobalRule:
                        globalRules, err := 
targetCache.ListGlobalRules(selector)
                        if err != nil {
-                               log.Errorw("failed to list global rules", 
zap.Error(err))
+                               s.log.Error(err, "failed to list global rules")
                        }
                        for _, globalRule := range globalRules {
                                if err := 
targetCache.DeleteGlobalRule(globalRule); err != nil {
-                                       log.Errorw("failed to delete global 
rule", zap.Error(err), zap.String("global rule", globalRule.ID))
+                                       s.log.Error(err, "failed to delete 
global rule", "global rule", globalRule.ID)
                                }
                        }
                case adctypes.TypePluginMetadata:
@@ -229,7 +230,7 @@ func (s *Store) GetResources(name string) 
(*adctypes.Resources, error) {
                }
                globalrule = adctypes.GlobalRule(merged)
        }
-       log.Debugw("get resources global rule items", 
zap.Any("globalRuleItems", globalRuleItems))
+       s.log.V(1).Info("GetResources fetched global rule items", "items", 
globalRuleItems, "gobalrule", globalrule)
        if meta, ok := s.pluginMetadataMap[name]; ok {
                metadata = meta.DeepCopy()
        }
diff --git a/internal/adc/client/client.go b/internal/adc/client/client.go
index 3474636d..b3951990 100644
--- a/internal/adc/client/client.go
+++ b/internal/adc/client/client.go
@@ -26,9 +26,8 @@ import (
        "sync"
        "time"
 
-       "github.com/api7/gopkg/pkg/log"
+       "github.com/go-logr/logr"
        "github.com/pkg/errors"
-       "go.uber.org/zap"
 
        adctypes "github.com/apache/apisix-ingress-controller/api/adc"
        "github.com/apache/apisix-ingress-controller/internal/adc/cache"
@@ -47,22 +46,28 @@ type Client struct {
 
        ConfigManager    *common.ConfigManager[types.NamespacedNameKind, 
adctypes.Config]
        ADCDebugProvider *common.ADCDebugProvider
+
+       log logr.Logger
 }
 
-func New(mode string, timeout time.Duration) (*Client, error) {
+func New(log logr.Logger, mode string, timeout time.Duration) (*Client, error) 
{
        serverURL := os.Getenv("ADC_SERVER_URL")
        if serverURL == "" {
                serverURL = defaultHTTPADCExecutorAddr
        }
-       store := cache.NewStore()
+       store := cache.NewStore(log)
        configManager := common.NewConfigManager[types.NamespacedNameKind, 
adctypes.Config]()
-       log.Infow("using HTTP ADC Executor", zap.String("server_url", 
serverURL))
+
+       logger := log.WithName("client")
+       logger.Info("ADC client initialized", "mode", mode)
+
        return &Client{
                Store:            store,
-               executor:         NewHTTPADCExecutor(serverURL, timeout),
+               executor:         NewHTTPADCExecutor(log, serverURL, timeout),
                BackendMode:      mode,
                ConfigManager:    configManager,
                ADCDebugProvider: common.NewADCDebugProvider(store, 
configManager),
+               log:              logger,
        }, nil
 }
 
@@ -80,31 +85,31 @@ type StoreDelta struct {
        Applied map[types.NamespacedNameKind]adctypes.Config
 }
 
-func (d *Client) applyStoreChanges(args Task, isDelete bool) (StoreDelta, 
error) {
-       d.mu.Lock()
-       defer d.mu.Unlock()
+func (c *Client) applyStoreChanges(args Task, isDelete bool) (StoreDelta, 
error) {
+       c.mu.Lock()
+       defer c.mu.Unlock()
 
        var delta StoreDelta
 
        if isDelete {
-               delta.Deleted = d.ConfigManager.Get(args.Key)
-               d.ConfigManager.Delete(args.Key)
+               delta.Deleted = c.ConfigManager.Get(args.Key)
+               c.ConfigManager.Delete(args.Key)
        } else {
-               deleted := d.ConfigManager.Update(args.Key, args.Configs)
+               deleted := c.ConfigManager.Update(args.Key, args.Configs)
                delta.Deleted = deleted
                delta.Applied = args.Configs
        }
 
        for _, cfg := range delta.Deleted {
-               if err := d.Store.Delete(cfg.Name, args.ResourceTypes, 
args.Labels); err != nil {
-                       log.Errorw("store delete failed", zap.Error(err), 
zap.Any("cfg", cfg), zap.Any("args", args))
+               if err := c.Store.Delete(cfg.Name, args.ResourceTypes, 
args.Labels); err != nil {
+                       c.log.Error(err, "store delete failed", "cfg", cfg, 
"args", args)
                        return StoreDelta{}, errors.Wrap(err, 
fmt.Sprintf("store delete failed for config %s", cfg.Name))
                }
        }
 
        for _, cfg := range delta.Applied {
-               if err := d.Insert(cfg.Name, args.ResourceTypes, 
args.Resources, args.Labels); err != nil {
-                       log.Errorw("store insert failed", zap.Error(err), 
zap.Any("cfg", cfg), zap.Any("args", args))
+               if err := c.Insert(cfg.Name, args.ResourceTypes, 
args.Resources, args.Labels); err != nil {
+                       c.log.Error(err, "store insert failed", "cfg", cfg, 
"args", args)
                        return StoreDelta{}, errors.Wrap(err, 
fmt.Sprintf("store insert failed for config %s", cfg.Name))
                }
        }
@@ -112,23 +117,23 @@ func (d *Client) applyStoreChanges(args Task, isDelete 
bool) (StoreDelta, error)
        return delta, nil
 }
 
-func (d *Client) applySync(ctx context.Context, args Task, delta StoreDelta) 
error {
-       d.syncMu.RLock()
-       defer d.syncMu.RUnlock()
+func (c *Client) applySync(ctx context.Context, args Task, delta StoreDelta) 
error {
+       c.syncMu.RLock()
+       defer c.syncMu.RUnlock()
 
        if len(delta.Deleted) > 0 {
-               if err := d.sync(ctx, Task{
+               if err := c.sync(ctx, Task{
                        Name:          args.Name,
                        Labels:        args.Labels,
                        ResourceTypes: args.ResourceTypes,
                        Configs:       delta.Deleted,
                }); err != nil {
-                       log.Warnw("failed to sync deleted configs", 
zap.Error(err))
+                       c.log.Error(err, "failed to sync deleted configs", 
"args", args, "delta", delta)
                }
        }
 
        if len(delta.Applied) > 0 {
-               return d.sync(ctx, Task{
+               return c.sync(ctx, Task{
                        Name:          args.Name,
                        Labels:        args.Labels,
                        ResourceTypes: args.ResourceTypes,
@@ -139,45 +144,45 @@ func (d *Client) applySync(ctx context.Context, args 
Task, delta StoreDelta) err
        return nil
 }
 
-func (d *Client) Update(ctx context.Context, args Task) error {
-       delta, err := d.applyStoreChanges(args, false)
+func (c *Client) Update(ctx context.Context, args Task) error {
+       delta, err := c.applyStoreChanges(args, false)
        if err != nil {
                return err
        }
-       return d.applySync(ctx, args, delta)
+       return c.applySync(ctx, args, delta)
 }
 
-func (d *Client) UpdateConfig(ctx context.Context, args Task) error {
-       _, err := d.applyStoreChanges(args, false)
+func (c *Client) UpdateConfig(ctx context.Context, args Task) error {
+       _, err := c.applyStoreChanges(args, false)
        return err
 }
 
-func (d *Client) Delete(ctx context.Context, args Task) error {
-       delta, err := d.applyStoreChanges(args, true)
+func (c *Client) Delete(ctx context.Context, args Task) error {
+       delta, err := c.applyStoreChanges(args, true)
        if err != nil {
                return err
        }
-       return d.applySync(ctx, args, delta)
+       return c.applySync(ctx, args, delta)
 }
 
-func (d *Client) DeleteConfig(ctx context.Context, args Task) error {
-       _, err := d.applyStoreChanges(args, true)
+func (c *Client) DeleteConfig(ctx context.Context, args Task) error {
+       _, err := c.applyStoreChanges(args, true)
        return err
 }
 
 func (c *Client) Sync(ctx context.Context) 
(map[string]types.ADCExecutionErrors, error) {
        c.syncMu.Lock()
        defer c.syncMu.Unlock()
-       log.Debug("syncing all resources")
+       c.log.Info("syncing all resources")
 
        configs := c.ConfigManager.List()
 
        if len(configs) == 0 {
-               log.Warn("no GatewayProxy configs provided")
+               c.log.Info("no GatewayProxy configs provided")
                return nil, nil
        }
 
-       log.Debugw("syncing resources with multiple configs", 
zap.Any("configs", configs))
+       c.log.V(1).Info("syncing resources with multiple configs", "configs", 
configs)
 
        failedMap := map[string]types.ADCExecutionErrors{}
        var failedConfigs []string
@@ -185,7 +190,7 @@ func (c *Client) Sync(ctx context.Context) 
(map[string]types.ADCExecutionErrors,
                name := config.Name
                resources, err := c.GetResources(name)
                if err != nil {
-                       log.Errorw("failed to get resources from store", 
zap.String("name", name), zap.Error(err))
+                       c.log.Error(err, "failed to get resources from store", 
"name", name)
                        failedConfigs = append(failedConfigs, name)
                        continue
                }
@@ -200,7 +205,7 @@ func (c *Client) Sync(ctx context.Context) 
(map[string]types.ADCExecutionErrors,
                        },
                        Resources: resources,
                }); err != nil {
-                       log.Errorw("failed to sync resources", 
zap.String("name", name), zap.Error(err))
+                       c.log.Error(err, "failed to sync resources", "name", 
name)
                        failedConfigs = append(failedConfigs, name)
                        var execErrs types.ADCExecutionErrors
                        if errors.As(err, &execErrs) {
@@ -219,10 +224,10 @@ func (c *Client) Sync(ctx context.Context) 
(map[string]types.ADCExecutionErrors,
 }
 
 func (c *Client) sync(ctx context.Context, task Task) error {
-       log.Debugw("syncing resources", zap.Any("task", task))
+       c.log.V(1).Info("syncing resources", "task", task)
 
        if len(task.Configs) == 0 {
-               log.Warnw("no adc configs provided", zap.Any("task", task))
+               c.log.Info("no adc configs provided")
                return nil
        }
 
@@ -238,6 +243,7 @@ func (c *Client) sync(ctx context.Context, task Task) error 
{
        }
        pkgmetrics.RecordFileIODuration("prepare_sync_file", 
adctypes.StatusSuccess, time.Since(fileIOStart).Seconds())
        defer cleanup()
+       c.log.V(1).Info("prepared sync file", "path", syncFilePath)
 
        args := BuildADCExecuteArgs(syncFilePath, task.Labels, 
task.ResourceTypes)
 
@@ -255,7 +261,7 @@ func (c *Client) sync(ctx context.Context, task Task) error 
{
                status := adctypes.StatusSuccess
                if err != nil {
                        status = "failure"
-                       log.Errorw("failed to execute adc command", 
zap.Error(err), zap.Any("config", config))
+                       c.log.Error(err, "failed to execute adc command", 
"config", config)
 
                        var execErr types.ADCExecutionError
                        if errors.As(err, &execErr) {
@@ -295,7 +301,5 @@ func prepareSyncFile(resources any) (string, func(), error) 
{
                return "", nil, err
        }
 
-       log.Debugw("generated adc file", zap.String("filename", 
tmpFile.Name()), zap.String("json", string(data)))
-
        return tmpFile.Name(), cleanup, nil
 }
diff --git a/internal/adc/client/executor.go b/internal/adc/client/executor.go
index bda6c7d7..5d997efc 100644
--- a/internal/adc/client/executor.go
+++ b/internal/adc/client/executor.go
@@ -32,8 +32,7 @@ import (
        "sync"
        "time"
 
-       "github.com/api7/gopkg/pkg/log"
-       "go.uber.org/zap"
+       "github.com/go-logr/logr"
        "k8s.io/utils/ptr"
 
        adctypes "github.com/apache/apisix-ingress-controller/api/adc"
@@ -50,6 +49,7 @@ type ADCExecutor interface {
 
 type DefaultADCExecutor struct {
        sync.Mutex
+       log logr.Logger
 }
 
 func (e *DefaultADCExecutor) Execute(ctx context.Context, mode string, config 
adctypes.Config, args []string) error {
@@ -63,7 +63,7 @@ func (e *DefaultADCExecutor) runADC(ctx context.Context, mode 
string, config adc
 
        for _, addr := range config.ServerAddrs {
                if err := e.runForSingleServerWithTimeout(ctx, addr, mode, 
config, args); err != nil {
-                       log.Errorw("failed to run adc for server", 
zap.String("server", addr), zap.Error(err))
+                       e.log.Error(err, "failed to run adc for server", 
"server", addr)
                        var execErr types.ADCExecutionServerAddrError
                        if errors.As(err, &execErr) {
                                execErrs.FailedErrors = 
append(execErrs.FailedErrors, execErr)
@@ -103,9 +103,9 @@ func (e *DefaultADCExecutor) runForSingleServer(ctx 
context.Context, serverAddr,
        cmd.Stderr = &stderr
        cmd.Env = append(os.Environ(), env...)
 
-       log.Debugw("running adc command",
-               zap.String("command", strings.Join(cmd.Args, " ")),
-               zap.Strings("env", filterSensitiveEnv(env)),
+       e.log.V(1).Info("running adc command",
+               "command", strings.Join(cmd.Args, " "),
+               "env", filterSensitiveEnv(env),
        )
 
        if err := cmd.Run(); err != nil {
@@ -114,22 +114,21 @@ func (e *DefaultADCExecutor) runForSingleServer(ctx 
context.Context, serverAddr,
 
        result, err := e.handleOutput(stdout.Bytes())
        if err != nil {
-               log.Errorw("failed to handle adc output",
-                       zap.Error(err),
-                       zap.String("stdout", stdout.String()),
-                       zap.String("stderr", stderr.String()),
-               )
+               e.log.Error(err, "failed to handle adc output",
+                       "stdout", stdout.String(),
+                       "stderr", stderr.String())
                return fmt.Errorf("failed to handle adc output: %w", err)
        }
        if result.FailedCount > 0 && len(result.Failed) > 0 {
-               log.Errorw("adc sync failed", zap.Any("result", result))
+               reason := result.Failed[0].Reason
+               e.log.Error(fmt.Errorf("adc sync failed: %s", reason), "adc 
sync failed", "result", result)
                return types.ADCExecutionServerAddrError{
                        ServerAddr:     serverAddr,
-                       Err:            result.Failed[0].Reason,
+                       Err:            reason,
                        FailedStatuses: result.Failed,
                }
        }
-       log.Debugw("adc sync success", zap.Any("result", result))
+       e.log.V(1).Info("adc sync success", "result", result)
        return nil
 }
 
@@ -161,28 +160,19 @@ func (e *DefaultADCExecutor) buildCmdError(runErr error, 
stdout, stderr []byte)
        if errMsg == "" {
                errMsg = string(stdout)
        }
-       log.Errorw("failed to run adc",
-               zap.Error(runErr),
-               zap.String("output", string(stdout)),
-               zap.String("stderr", string(stderr)),
-       )
+       e.log.Error(runErr, "failed to run adc", "output", string(stdout), 
"stderr", string(stderr))
        return errors.New("failed to sync resources: " + errMsg + ", exit err: 
" + runErr.Error())
 }
 
 func (e *DefaultADCExecutor) handleOutput(output []byte) 
(*adctypes.SyncResult, error) {
+       e.log.V(1).Info("adc command output", "output", string(output))
        var result adctypes.SyncResult
-       log.Debugw("adc output", zap.String("output", string(output)))
        if lines := bytes.Split(output, []byte{'\n'}); len(lines) > 0 {
                output = lines[len(lines)-1]
        }
        if err := json.Unmarshal(output, &result); err != nil {
-               log.Errorw("failed to unmarshal adc output",
-                       zap.Error(err),
-                       zap.String("stdout", string(output)),
-               )
-               return nil, errors.New("failed to parse adc result: " + 
err.Error())
+               return nil, errors.New("failed to unmarshal response: " + 
string(output) + ", err: " + err.Error())
        }
-
        return &result, nil
 }
 
@@ -226,11 +216,12 @@ type ADCServerOpts struct {
 type HTTPADCExecutor struct {
        httpClient *http.Client
        serverURL  string
+       log        logr.Logger
 }
 
 // NewHTTPADCExecutor creates a new HTTPADCExecutor with the specified ADC 
Server URL.
 // serverURL can be "http(s)://host:port" or "unix:///path/to/socket" or 
"unix:/path/to/socket".
-func NewHTTPADCExecutor(serverURL string, timeout time.Duration) 
*HTTPADCExecutor {
+func NewHTTPADCExecutor(log logr.Logger, serverURL string, timeout 
time.Duration) *HTTPADCExecutor {
        httpClient := &http.Client{
                Timeout: timeout,
        }
@@ -254,6 +245,7 @@ func NewHTTPADCExecutor(serverURL string, timeout 
time.Duration) *HTTPADCExecuto
        return &HTTPADCExecutor{
                httpClient: httpClient,
                serverURL:  serverURL,
+               log:        log.WithName("executor"),
        }
 }
 
@@ -274,11 +266,11 @@ func (e *HTTPADCExecutor) runHTTPSync(ctx 
context.Context, mode string, config a
                }
                return config.ServerAddrs
        }()
-       log.Debugw("running http sync", zap.Strings("serverAddrs", 
serverAddrs), zap.String("mode", mode))
+       e.log.V(1).Info("running http sync", "serverAddrs", serverAddrs, 
"mode", mode)
 
        for _, addr := range serverAddrs {
                if err := e.runHTTPSyncForSingleServer(ctx, addr, mode, config, 
args); err != nil {
-                       log.Errorw("failed to run http sync for server", 
zap.String("server", addr), zap.Error(err))
+                       e.log.Error(err, "failed to run http sync for server", 
"server", addr)
                        var execErr types.ADCExecutionServerAddrError
                        if errors.As(err, &execErr) {
                                execErrs.FailedErrors = 
append(execErrs.FailedErrors, execErr)
@@ -326,7 +318,7 @@ func (e *HTTPADCExecutor) runHTTPSyncForSingleServer(ctx 
context.Context, server
        }
        defer func() {
                if closeErr := resp.Body.Close(); closeErr != nil {
-                       log.Warnw("failed to close response body", 
zap.Error(closeErr))
+                       e.log.Error(closeErr, "failed to close response body")
                }
        }()
 
@@ -405,21 +397,21 @@ func (e *HTTPADCExecutor) buildHTTPRequest(ctx 
context.Context, serverAddr, mode
                },
        }
 
+       e.log.V(1).Info("prepared request body", "body", reqBody)
+
        jsonData, err := json.Marshal(reqBody)
        if err != nil {
                return nil, fmt.Errorf("failed to marshal request body: %w", 
err)
        }
 
-       log.Debugw("request body", zap.String("body", string(jsonData)))
-
-       log.Debugw("sending HTTP request to ADC Server",
-               zap.String("url", e.serverURL+"/sync"),
-               zap.String("server", serverAddr),
-               zap.String("mode", mode),
-               zap.String("cacheKey", config.Name),
-               zap.Any("labelSelector", labels),
-               zap.Strings("includeResourceType", types),
-               zap.Bool("tlsSkipVerify", !tlsVerify),
+       e.log.V(1).Info("sending HTTP request to ADC Server",
+               "url", e.serverURL+"/sync",
+               "server", serverAddr,
+               "mode", mode,
+               "cacheKey", config.Name,
+               "labelSelector", labels,
+               "includeResourceType", types,
+               "tlsSkipVerify", !tlsVerify,
        )
 
        // Create HTTP request
@@ -439,10 +431,10 @@ func (e *HTTPADCExecutor) handleHTTPResponse(resp 
*http.Response, serverAddr str
                return fmt.Errorf("failed to read response body: %w", err)
        }
 
-       log.Debugw("received HTTP response from ADC Server",
-               zap.String("server", serverAddr),
-               zap.Int("status", resp.StatusCode),
-               zap.String("response", string(body)),
+       e.log.V(1).Info("received HTTP response from ADC Server",
+               "server", serverAddr,
+               "status", resp.StatusCode,
+               "response", string(body),
        )
 
        // not only 200, HTTP 202 is also accepted
@@ -456,23 +448,20 @@ func (e *HTTPADCExecutor) handleHTTPResponse(resp 
*http.Response, serverAddr str
        // Parse response body
        var result adctypes.SyncResult
        if err := json.Unmarshal(body, &result); err != nil {
-               log.Errorw("failed to unmarshal ADC Server response",
-                       zap.Error(err),
-                       zap.String("response", string(body)),
-               )
-               return fmt.Errorf("failed to parse ADC Server response: %w", 
err)
+               return fmt.Errorf("failed to unmarshal response body: %s, err: 
%w", string(body), err)
        }
 
        // Check for sync failures
        if result.FailedCount > 0 && len(result.Failed) > 0 {
-               log.Errorw("ADC Server sync failed", zap.Any("result", result))
+               reason := result.Failed[0].Reason
+               e.log.Error(fmt.Errorf("ADC Server sync failed: %s", reason), 
"ADC Server sync failed", "result", result)
                return types.ADCExecutionServerAddrError{
                        ServerAddr:     serverAddr,
-                       Err:            result.Failed[0].Reason,
+                       Err:            reason,
                        FailedStatuses: result.Failed,
                }
        }
 
-       log.Debugw("ADC Server sync success", zap.Any("result", result))
+       e.log.V(1).Info("ADC Server sync success", "result", result)
        return nil
 }
diff --git a/internal/adc/translator/apisixroute.go 
b/internal/adc/translator/apisixroute.go
index 5e2e1233..58a162c9 100644
--- a/internal/adc/translator/apisixroute.go
+++ b/internal/adc/translator/apisixroute.go
@@ -23,9 +23,7 @@ import (
        "fmt"
        "strconv"
 
-       "github.com/api7/gopkg/pkg/log"
        "github.com/pkg/errors"
-       "go.uber.org/zap"
        v1 "k8s.io/api/core/v1"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "k8s.io/apimachinery/pkg/types"
@@ -232,7 +230,7 @@ func (t *Translator) buildUpstream(tctx 
*provider.TranslateContext, service *adc
                }
                au, ok := tctx.Upstreams[upsNN]
                if !ok {
-                       log.Debugw("failed to retrieve ApisixUpstream from 
tctx", zap.Any("ApisixUpstream", upsNN))
+                       t.Log.V(1).Info("failed to retrieve ApisixUpstream from 
tctx", "ApisixUpstream", upsNN.String())
                        continue
                }
                upstream, err := t.translateApisixUpstream(tctx, au)
diff --git a/internal/adc/translator/apisixupstream.go 
b/internal/adc/translator/apisixupstream.go
index 7aec7bad..86a39e62 100644
--- a/internal/adc/translator/apisixupstream.go
+++ b/internal/adc/translator/apisixupstream.go
@@ -22,9 +22,7 @@ import (
        "fmt"
        "maps"
 
-       "github.com/api7/gopkg/pkg/log"
        "github.com/pkg/errors"
-       "go.uber.org/zap"
        corev1 "k8s.io/api/core/v1"
        "k8s.io/apimachinery/pkg/types"
 
@@ -39,7 +37,7 @@ func (t *Translator) translateApisixUpstream(tctx 
*provider.TranslateContext, au
 }
 
 func (t *Translator) translateApisixUpstreamForPort(tctx 
*provider.TranslateContext, au *apiv2.ApisixUpstream, port *int32) 
(*adc.Upstream, error) {
-       log.Debugw("translating ApisixUpstream", zap.Any("apisixupstream", au), 
zap.Int32p("port", port))
+       t.Log.V(1).Info("translating ApisixUpstream", "apisixupstream", au, 
"port", port)
 
        ups := adc.NewDefaultUpstream()
        ups.Name = composeExternalUpstreamName(au)
@@ -70,7 +68,7 @@ func (t *Translator) translateApisixUpstreamForPort(tctx 
*provider.TranslateCont
                }
        }
 
-       log.Debugw("translated ApisixUpstream", zap.Any("upstream", ups))
+       t.Log.V(1).Info("translated ApisixUpstream", "upstream", ups)
 
        return ups, nil
 }
diff --git a/internal/adc/translator/gateway.go 
b/internal/adc/translator/gateway.go
index 43fc765f..db284845 100644
--- a/internal/adc/translator/gateway.go
+++ b/internal/adc/translator/gateway.go
@@ -24,9 +24,7 @@ import (
        "fmt"
        "slices"
 
-       "github.com/api7/gopkg/pkg/log"
        "github.com/pkg/errors"
-       "go.uber.org/zap"
        corev1 "k8s.io/api/core/v1"
        "k8s.io/apimachinery/pkg/types"
        gatewayv1 "sigs.k8s.io/gateway-api/apis/v1"
@@ -57,7 +55,7 @@ func (t *Translator) TranslateGateway(tctx 
*provider.TranslateContext, obj *gate
        rk := utils.NamespacedNameKind(obj)
        gatewayProxy, ok := tctx.GatewayProxies[rk]
        if !ok {
-               log.Debugw("no GatewayProxy found for Gateway", 
zap.String("gateway", obj.Name))
+               t.Log.V(1).Info("no GatewayProxy found for Gateway", "gateway", 
obj.Name)
                return result, nil
        }
 
@@ -92,17 +90,18 @@ func (t *Translator) translateSecret(tctx 
*provider.TranslateContext, listener g
                                        Snis: []string{},
                                }
                                name := listener.TLS.CertificateRefs[0].Name
-                               secret := 
tctx.Secrets[types.NamespacedName{Namespace: ns, Name: string(ref.Name)}]
+                               secretNN := types.NamespacedName{Namespace: ns, 
Name: string(ref.Name)}
+                               secret := tctx.Secrets[secretNN]
                                if secret == nil {
                                        continue
                                }
                                if secret.Data == nil {
-                                       log.Errorw("secret data is nil", 
zap.Any("secret", secret))
+                                       t.Log.Error(errors.New("secret data is 
nil"), "failed to get secret data", "secret", secretNN)
                                        return nil, fmt.Errorf("no secret data 
found for %s/%s", ns, name)
                                }
                                cert, key, err := extractKeyPair(secret, true)
                                if err != nil {
-                                       log.Errorw("failed to extract key 
pair", zap.Error(err), zap.Any("secret", secret))
+                                       t.Log.Error(err, "extract key pair", 
"secret", secretNN)
                                        return nil, err
                                }
                                sslObj.Certificates = 
append(sslObj.Certificates, adctypes.Certificate{
@@ -118,14 +117,14 @@ func (t *Translator) translateSecret(tctx 
*provider.TranslateContext, listener g
                                                return nil, err
                                        }
                                        if len(hosts) == 0 {
-                                               log.Warnw("no valid hostname 
found in certificate", zap.String("secret", secret.Namespace+"/"+secret.Name))
+                                               t.Log.Info("no valid hostname 
found in certificate", "secret", secretNN.String())
                                                continue
                                        }
                                        sslObj.Snis = append(sslObj.Snis, 
hosts...)
                                }
                                // Note: use cert as id to avoid duplicate 
certificate across ssl objects
                                sslObj.ID = id.GenID(string(cert))
-                               log.Debugw("generated ssl id", zap.String("ssl 
id", sslObj.ID), zap.String("secret", secret.Namespace+"/"+secret.Name))
+                               t.Log.V(1).Info("generated ssl id", "ssl id", 
sslObj.ID, "secret", secretNN.String())
                                sslObj.Labels = label.GenLabel(obj)
                                sslObjs = append(sslObjs, sslObj)
                        }
@@ -219,13 +218,13 @@ func (t *Translator) fillPluginsFromGatewayProxy(plugins 
adctypes.GlobalRule, ga
                pluginConfig := map[string]any{}
                if len(plugin.Config.Raw) > 0 {
                        if err := json.Unmarshal(plugin.Config.Raw, 
&pluginConfig); err != nil {
-                               log.Errorw("gateway proxy plugin config 
unmarshal failed", zap.Error(err), zap.String("plugin", pluginName))
+                               t.Log.Error(err, "gateway proxy plugin config 
unmarshal failed", "plugin", pluginName)
                                continue
                        }
                }
                plugins[pluginName] = pluginConfig
        }
-       log.Debugw("fill plugins for gateway proxy", zap.Any("plugins", 
plugins))
+       t.Log.V(1).Info("fill plugins for gateway proxy", "plugins", plugins)
 }
 
 func (t *Translator) fillPluginMetadataFromGatewayProxy(pluginMetadata 
adctypes.PluginMetadata, gatewayProxy *v1alpha1.GatewayProxy) {
@@ -235,10 +234,10 @@ func (t *Translator) 
fillPluginMetadataFromGatewayProxy(pluginMetadata adctypes.
        for pluginName, plugin := range gatewayProxy.Spec.PluginMetadata {
                var pluginConfig map[string]any
                if err := json.Unmarshal(plugin.Raw, &pluginConfig); err != nil 
{
-                       log.Errorw("gateway proxy plugin_metadata unmarshal 
failed", zap.Error(err), zap.Any("plugin", pluginName), zap.String("config", 
string(plugin.Raw)))
+                       t.Log.Error(err, "gateway proxy plugin_metadata 
unmarshal failed", "plugin", pluginName, "config", string(plugin.Raw))
                        continue
                }
-               log.Debugw("fill plugin_metadata for gateway proxy", 
zap.String("plugin", pluginName), zap.Any("config", pluginConfig))
+               t.Log.V(1).Info("fill plugin_metadata for gateway proxy", 
"plugin", pluginName, "config", pluginConfig)
                pluginMetadata[pluginName] = pluginConfig
        }
 }
diff --git a/internal/adc/translator/gatewayproxy.go 
b/internal/adc/translator/gatewayproxy.go
index 8b7fb673..6636816f 100644
--- a/internal/adc/translator/gatewayproxy.go
+++ b/internal/adc/translator/gatewayproxy.go
@@ -22,9 +22,7 @@ import (
        "net"
        "strconv"
 
-       "github.com/api7/gopkg/pkg/log"
        "github.com/pkg/errors"
-       "go.uber.org/zap"
        corev1 "k8s.io/api/core/v1"
        discoveryv1 "k8s.io/api/discovery/v1"
        k8stypes "k8s.io/apimachinery/pkg/types"
@@ -108,7 +106,7 @@ func (t *Translator) TranslateGatewayProxyToConfig(tctx 
*provider.TranslateConte
                                },
                        }, func(endpoint *discoveryv1.Endpoint) bool {
                                if endpoint.Conditions.Terminating != nil && 
*endpoint.Conditions.Terminating {
-                                       log.Debugw("skip terminating endpoint", 
zap.Any("endpoint", endpoint))
+                                       t.Log.V(1).Info("skip terminating 
endpoint", "endpoint", endpoint)
                                        return false
                                }
                                return true
@@ -130,7 +128,7 @@ func (t *Translator) TranslateGatewayProxyToConfig(tctx 
*provider.TranslateConte
                        config.ServerAddrs = []string{serverAddr}
                }
 
-               log.Debugw("add server address to config.ServiceAddrs", 
zap.Strings("config.ServerAddrs", config.ServerAddrs))
+               t.Log.V(1).Info("add server address to config.ServiceAddrs", 
"config.ServerAddrs", config.ServerAddrs)
        }
 
        return &config, nil
diff --git a/internal/adc/translator/globalrule.go 
b/internal/adc/translator/globalrule.go
index 692321db..89f1626a 100644
--- a/internal/adc/translator/globalrule.go
+++ b/internal/adc/translator/globalrule.go
@@ -20,9 +20,6 @@ package translator
 import (
        "encoding/json"
 
-       "github.com/api7/gopkg/pkg/log"
-       "go.uber.org/zap"
-
        adctypes "github.com/apache/apisix-ingress-controller/api/adc"
        apiv2 "github.com/apache/apisix-ingress-controller/api/v2"
        "github.com/apache/apisix-ingress-controller/internal/provider"
@@ -30,10 +27,7 @@ import (
 
 // TranslateApisixGlobalRule translates ApisixGlobalRule to APISIX GlobalRule
 func (t *Translator) TranslateApisixGlobalRule(tctx 
*provider.TranslateContext, obj *apiv2.ApisixGlobalRule) (*TranslateResult, 
error) {
-       log.Debugw("translating ApisixGlobalRule",
-               zap.String("namespace", obj.Namespace),
-               zap.String("name", obj.Name),
-       )
+       t.Log.V(1).Info("translating ApisixGlobalRule", "namespace", 
obj.Namespace, "name", obj.Name)
 
        // Create global rule plugins
        plugins := make(adctypes.Plugins)
@@ -48,7 +42,7 @@ func (t *Translator) TranslateApisixGlobalRule(tctx 
*provider.TranslateContext,
                pluginConfig := make(map[string]any)
                if len(plugin.Config.Raw) > 0 {
                        if err := json.Unmarshal(plugin.Config.Raw, 
&pluginConfig); err != nil {
-                               log.Errorw("failed to unmarshal plugin config", 
zap.String("plugin", plugin.Name), zap.Error(err))
+                               t.Log.Error(err, "failed to unmarshal plugin 
config", "plugin", plugin.Name)
                                continue
                        }
                }
diff --git a/internal/adc/translator/httproute.go 
b/internal/adc/translator/httproute.go
index d88b32cf..7d829b16 100644
--- a/internal/adc/translator/httproute.go
+++ b/internal/adc/translator/httproute.go
@@ -22,9 +22,7 @@ import (
        "fmt"
        "strings"
 
-       "github.com/api7/gopkg/pkg/log"
        "github.com/pkg/errors"
-       "go.uber.org/zap"
        corev1 "k8s.io/api/core/v1"
        discoveryv1 "k8s.io/api/discovery/v1"
        "k8s.io/apimachinery/pkg/types"
@@ -84,13 +82,13 @@ func (t *Translator) fillPluginFromExtensionRef(plugins 
adctypes.Plugins, namesp
                        pluginconfig := make(map[string]any)
                        if len(plugin.Config.Raw) > 0 {
                                if err := json.Unmarshal(plugin.Config.Raw, 
&pluginconfig); err != nil {
-                                       log.Errorw("plugin config unmarshal 
failed", zap.Error(err))
+                                       t.Log.Error(err, "plugin config 
unmarshal failed", "plugin", plugin.Name)
                                        continue
                                }
                        }
                        plugins[pluginName] = pluginconfig
                }
-               log.Debugw("fill plugin from extension ref", zap.Any("plugins", 
plugins))
+               t.Log.V(1).Info("fill plugin from extension ref", "plugins", 
plugins)
        }
 }
 
@@ -322,7 +320,7 @@ func (t *Translator) fillHTTPRoutePolicies(routes 
[]*adctypes.Route, policies []
                        for _, data := range policy.Spec.Vars {
                                var v []adctypes.StringOrSlice
                                if err := json.Unmarshal(data.Raw, &v); err != 
nil {
-                                       log.Errorw("failed to unmarshal 
spec.Vars item to []StringOrSlice", zap.Error(err), zap.String("data", 
string(data.Raw)))
+                                       t.Log.Error(err, "failed to unmarshal 
spec.Vars item to []StringOrSlice", "data", string(data.Raw))
                                        // todo: update status
                                        continue
                                }
@@ -344,6 +342,7 @@ func (t *Translator) translateEndpointSlice(portName 
*string, weight int, endpoi
                        }
                        for _, endpoint := range endpointSlice.Endpoints {
                                if endpointFilter != nil && 
!endpointFilter(&endpoint) {
+                                       t.Log.V(1).Info("skip endpoint by 
filter", "endpoint", endpoint)
                                        continue
                                }
                                for _, addr := range endpoint.Addresses {
@@ -366,7 +365,6 @@ func (t *Translator) translateEndpointSlice(portName 
*string, weight int, endpoi
 
 func DefaultEndpointFilter(endpoint *discoveryv1.Endpoint) bool {
        if endpoint.Conditions.Ready != nil && !*endpoint.Conditions.Ready {
-               log.Debugw("skip not ready endpoint", zap.Any("endpoint", 
endpoint))
                return false
        }
        return true
diff --git a/internal/adc/translator/ingressclass.go 
b/internal/adc/translator/ingressclass.go
index d9142592..064bd77d 100644
--- a/internal/adc/translator/ingressclass.go
+++ b/internal/adc/translator/ingressclass.go
@@ -18,8 +18,6 @@
 package translator
 
 import (
-       "github.com/api7/gopkg/pkg/log"
-       "go.uber.org/zap"
        networkingv1 "k8s.io/api/networking/v1"
 
        adctypes "github.com/apache/apisix-ingress-controller/api/adc"
@@ -33,7 +31,7 @@ func (t *Translator) TranslateIngressClass(tctx 
*provider.TranslateContext, obj
        rk := utils.NamespacedNameKind(obj)
        gatewayProxy, ok := tctx.GatewayProxies[rk]
        if !ok {
-               log.Debugw("no GatewayProxy found for IngressClass", 
zap.String("ingressclass", obj.Name))
+               t.Log.V(1).Info("no GatewayProxy found for IngressClass", 
"ingressclass", obj.Name)
                return result, nil
        }
 
diff --git a/internal/adc/translator/translator.go 
b/internal/adc/translator/translator.go
index 4c9bf0d8..aeaef250 100644
--- a/internal/adc/translator/translator.go
+++ b/internal/adc/translator/translator.go
@@ -29,7 +29,7 @@ type Translator struct {
 
 func NewTranslator(log logr.Logger) *Translator {
        return &Translator{
-               Log: log,
+               Log: log.WithName("translator"),
        }
 }
 
diff --git a/internal/controller/apisixroute_controller.go 
b/internal/controller/apisixroute_controller.go
index dd57202b..c6e3afda 100644
--- a/internal/controller/apisixroute_controller.go
+++ b/internal/controller/apisixroute_controller.go
@@ -24,9 +24,7 @@ import (
        "fmt"
        "slices"
 
-       "github.com/api7/gopkg/pkg/log"
        "github.com/go-logr/logr"
-       "go.uber.org/zap"
        corev1 "k8s.io/api/core/v1"
        discoveryv1 "k8s.io/api/discovery/v1"
        networkingv1 "k8s.io/api/networking/v1"
@@ -409,9 +407,9 @@ func (r *ApisixRouteReconciler) validateHTTPBackend(tctx 
*provider.TranslateCont
        }
 
        // try to get apisixupstream with the same name as the backend service
-       log.Debugw("try to get apisixupstream with the same name as the backend 
service", zap.Stringer("Service", serviceNN))
+       r.Log.V(1).Info("try to get apisixupstream with the same name as the 
backend service", "Service", serviceNN)
        if err := r.Get(tctx, serviceNN, &au); err != nil {
-               log.Debugw("no ApisixUpstream with the same name as the backend 
service found", zap.Stringer("Service", serviceNN), zap.Error(err))
+               r.Log.V(1).Info("no ApisixUpstream with the same name as the 
backend service found", "Service", serviceNN, "Error", err)
                if err = client.IgnoreNotFound(err); err != nil {
                        return err
                }
diff --git a/internal/controller/gatewayproxy_controller.go 
b/internal/controller/gatewayproxy_controller.go
index 7b27d316..b2dd7980 100644
--- a/internal/controller/gatewayproxy_controller.go
+++ b/internal/controller/gatewayproxy_controller.go
@@ -100,7 +100,7 @@ func (r *GatewayProxyController) Reconcile(ctx 
context.Context, req ctrl.Request
        if providerService == nil {
                tctx.EndpointSlices[req.NamespacedName] = nil
        } else {
-               if err := addProviderEndpointsToTranslateContext(tctx, 
r.Client, types.NamespacedName{
+               if err := addProviderEndpointsToTranslateContext(tctx, 
r.Client, r.Log, types.NamespacedName{
                        Namespace: gp.Namespace,
                        Name:      providerService.Name,
                }); err != nil {
diff --git a/internal/controller/grpcroute_controller.go 
b/internal/controller/grpcroute_controller.go
index 782f98f8..3b423417 100644
--- a/internal/controller/grpcroute_controller.go
+++ b/internal/controller/grpcroute_controller.go
@@ -182,7 +182,7 @@ func (r *GRPCRouteReconciler) Reconcile(ctx 
context.Context, req ctrl.Request) (
                msg:    "Route is accepted",
        }
 
-       gateways, err := ParseRouteParentRefs(ctx, r.Client, gr, 
gr.Spec.ParentRefs)
+       gateways, err := ParseRouteParentRefs(ctx, r.Client, r.Log, gr, 
gr.Spec.ParentRefs)
        if err != nil {
                return ctrl.Result{}, err
        }
diff --git a/internal/controller/httproute_controller.go 
b/internal/controller/httproute_controller.go
index 8cd7b507..1c449e79 100644
--- a/internal/controller/httproute_controller.go
+++ b/internal/controller/httproute_controller.go
@@ -22,10 +22,8 @@ import (
        "context"
        "fmt"
 
-       "github.com/api7/gopkg/pkg/log"
        "github.com/go-logr/logr"
        "github.com/pkg/errors"
-       "go.uber.org/zap"
        "golang.org/x/exp/slices"
        corev1 "k8s.io/api/core/v1"
        discoveryv1 "k8s.io/api/discovery/v1"
@@ -167,7 +165,7 @@ func (r *HTTPRouteReconciler) Reconcile(ctx 
context.Context, req ctrl.Request) (
                msg:    "Route is accepted",
        }
 
-       gateways, err := ParseRouteParentRefs(ctx, r.Client, hr, 
hr.Spec.ParentRefs)
+       gateways, err := ParseRouteParentRefs(ctx, r.Client, r.Log, hr, 
hr.Spec.ParentRefs)
        if err != nil {
                return ctrl.Result{}, err
        }
@@ -250,7 +248,7 @@ func (r *HTTPRouteReconciler) Reconcile(ctx 
context.Context, req ctrl.Request) (
        if isRouteAccepted(gateways) && err == nil {
                routeToUpdate := hr
                if filteredHTTPRoute != nil {
-                       log.Debugw("filteredHTTPRoute", 
zap.Any("filteredHTTPRoute", filteredHTTPRoute))
+                       r.Log.V(1).Info("filtered httproute", "httproute", 
filteredHTTPRoute)
                        routeToUpdate = filteredHTTPRoute
                }
                if err := r.Provider.Update(ctx, tctx, routeToUpdate); err != 
nil {
diff --git a/internal/controller/ingress_controller.go 
b/internal/controller/ingress_controller.go
index 8ef3d735..5fe611da 100644
--- a/internal/controller/ingress_controller.go
+++ b/internal/controller/ingress_controller.go
@@ -22,9 +22,7 @@ import (
        "fmt"
        "reflect"
 
-       "github.com/api7/gopkg/pkg/log"
        "github.com/go-logr/logr"
-       "go.uber.org/zap"
        corev1 "k8s.io/api/core/v1"
        discoveryv1 "k8s.io/api/discovery/v1"
        networkingv1 "k8s.io/api/networking/v1"
@@ -467,7 +465,7 @@ func (r *IngressReconciler) processTLS(tctx 
*provider.TranslateContext, ingress
                }
 
                if secret.Data == nil {
-                       log.Warnw("secret data is nil", zap.String("secret", 
secret.Namespace+"/"+secret.Name))
+                       r.Log.Error(fmt.Errorf("no secret data found"), "secret 
data is nil", "namespace", ingress.Namespace, "name", tls.SecretName)
                        continue
                }
 
@@ -571,7 +569,7 @@ func (r *IngressReconciler) updateStatus(ctx 
context.Context, tctx *provider.Tra
 
        gatewayProxy, ok := tctx.GatewayProxies[ingressClassKind]
        if !ok {
-               log.Debugw("no gateway proxy found for ingress class", 
zap.String("ingressClass", ingressClass.Name))
+               r.Log.V(1).Info("no gateway proxy found for ingress class", 
"ingressClass", ingressClass.Name)
                return nil
        }
 
diff --git a/internal/controller/ingressclass_controller.go 
b/internal/controller/ingressclass_controller.go
index fe11b7fc..5594ee6c 100644
--- a/internal/controller/ingressclass_controller.go
+++ b/internal/controller/ingressclass_controller.go
@@ -228,7 +228,7 @@ func (r *IngressClassReconciler) processInfrastructure(tctx 
*provider.TranslateC
        }
 
        if service := gatewayProxy.Spec.Provider.ControlPlane.Service; service 
!= nil {
-               if err := addProviderEndpointsToTranslateContext(tctx, 
r.Client, types.NamespacedName{
+               if err := addProviderEndpointsToTranslateContext(tctx, 
r.Client, r.Log, types.NamespacedName{
                        Namespace: gatewayProxy.GetNamespace(),
                        Name:      service.Name,
                }); err != nil {
diff --git a/internal/controller/tcproute_controller.go 
b/internal/controller/tcproute_controller.go
index 271198a6..125a14a9 100644
--- a/internal/controller/tcproute_controller.go
+++ b/internal/controller/tcproute_controller.go
@@ -255,7 +255,7 @@ func (r *TCPRouteReconciler) Reconcile(ctx context.Context, 
req ctrl.Request) (c
                msg:    "Route is accepted",
        }
 
-       gateways, err := ParseRouteParentRefs(ctx, r.Client, tr, 
tr.Spec.ParentRefs)
+       gateways, err := ParseRouteParentRefs(ctx, r.Client, r.Log, tr, 
tr.Spec.ParentRefs)
        if err != nil {
                return ctrl.Result{}, err
        }
diff --git a/internal/controller/udproute_controller.go 
b/internal/controller/udproute_controller.go
index 88b11367..2a4a7a4a 100644
--- a/internal/controller/udproute_controller.go
+++ b/internal/controller/udproute_controller.go
@@ -255,7 +255,7 @@ func (r *UDPRouteReconciler) Reconcile(ctx context.Context, 
req ctrl.Request) (c
                msg:    "Route is accepted",
        }
 
-       gateways, err := ParseRouteParentRefs(ctx, r.Client, tr, 
tr.Spec.ParentRefs)
+       gateways, err := ParseRouteParentRefs(ctx, r.Client, r.Log, tr, 
tr.Spec.ParentRefs)
        if err != nil {
                return ctrl.Result{}, err
        }
diff --git a/internal/controller/utils.go b/internal/controller/utils.go
index 4a0e9a65..530e7c4f 100644
--- a/internal/controller/utils.go
+++ b/internal/controller/utils.go
@@ -28,10 +28,8 @@ import (
        "slices"
        "strings"
 
-       "github.com/api7/gopkg/pkg/log"
        "github.com/go-logr/logr"
        "github.com/samber/lo"
-       "go.uber.org/zap"
        corev1 "k8s.io/api/core/v1"
        discoveryv1 "k8s.io/api/discovery/v1"
        networkingv1 "k8s.io/api/networking/v1"
@@ -318,7 +316,11 @@ func SetRouteParentRef(routeParentStatus 
*gatewayv1.RouteParentStatus, gatewayNa
 }
 
 func ParseRouteParentRefs(
-       ctx context.Context, mgrc client.Client, route client.Object, 
parentRefs []gatewayv1.ParentReference,
+       ctx context.Context,
+       mgrc client.Client,
+       log logr.Logger,
+       route client.Object,
+       parentRefs []gatewayv1.ParentReference,
 ) ([]RouteParentRefContext, error) {
        gateways := make([]RouteParentRefContext, 0)
        for _, parentRef := range parentRefs {
@@ -387,12 +389,10 @@ func ParseRouteParentRefs(
                        listenerName = string(listener.Name)
                        ok, err := routeMatchesListenerAllowedRoutes(ctx, mgrc, 
route, listener.AllowedRoutes, gateway.Namespace, parentRef.Namespace)
                        if err != nil {
-                               log.Warnw("failed matching listener to a route 
for gateway",
-                                       zap.String("listener", 
string(listener.Name)),
-                                       zap.String("route", route.GetName()),
-                                       zap.String("gateway", gateway.Name),
-                                       zap.Error(err),
-                               )
+                               log.Error(err, "failed matching listener to a 
route for gateway",
+                                       "listener", string(listener.Name),
+                                       "route", route.GetName(),
+                                       "gateway", gateway.Name)
                        }
                        if !ok {
                                reason = 
gatewayv1.RouteReasonNotAllowedByListeners
@@ -975,7 +975,7 @@ func ProcessGatewayProxy(r client.Client, log logr.Logger, 
tctx *provider.Transl
                                        }
 
                                        if cp.Service != nil {
-                                               if err := 
addProviderEndpointsToTranslateContext(tctx, r, k8stypes.NamespacedName{
+                                               if err := 
addProviderEndpointsToTranslateContext(tctx, r, log, k8stypes.NamespacedName{
                                                        Namespace: 
gatewayProxy.GetNamespace(),
                                                        Name:      
cp.Service.Name,
                                                }); err != nil {
@@ -1031,7 +1031,6 @@ func filterHostnames(gateways []RouteParentRefContext, 
httpRoute *gatewayv1.HTTP
                }
        }
 
-       log.Debugw("filtered hostnames", zap.Any("httpRouteHostnames", 
httpRoute.Spec.Hostnames), zap.Any("hostnames", filteredHostnames))
        httpRoute.Spec.Hostnames = filteredHostnames
        return httpRoute, nil
 }
@@ -1345,7 +1344,7 @@ func ProcessIngressClassParameters(tctx 
*provider.TranslateContext, c client.Cli
 
                                // process control plane provider service
                                if cp.Service != nil {
-                                       if err := 
addProviderEndpointsToTranslateContext(tctx, c, client.ObjectKey{
+                                       if err := 
addProviderEndpointsToTranslateContext(tctx, c, log, client.ObjectKey{
                                                Namespace: 
gatewayProxy.GetNamespace(),
                                                Name:      cp.Service.Name,
                                        }); err != nil {
@@ -1411,13 +1410,13 @@ func distinctRequests(requests []reconcile.Request) 
[]reconcile.Request {
        return distinctRequests
 }
 
-func addProviderEndpointsToTranslateContext(tctx *provider.TranslateContext, c 
client.Client, serviceNN k8stypes.NamespacedName) error {
-       log.Debugw("to process provider endpoints by provider.service", 
zap.Any("service", serviceNN))
+func addProviderEndpointsToTranslateContext(tctx *provider.TranslateContext, c 
client.Client, log logr.Logger, serviceNN k8stypes.NamespacedName) error {
+       log.V(1).Info("to process provider endpoints by provider.service", 
"service", serviceNN)
        var (
                service corev1.Service
        )
        if err := c.Get(tctx, serviceNN, &service); err != nil {
-               log.Errorw("failed to get service from GatewayProxy provider", 
zap.Error(err), zap.Any("key", serviceNN))
+               log.Error(err, "failed to get service from GatewayProxy 
provider", "service", serviceNN)
                return err
        }
        tctx.Services[serviceNN] = &service
@@ -1431,7 +1430,8 @@ func addProviderEndpointsToTranslateContext(tctx 
*provider.TranslateContext, c c
                client.MatchingLabels{
                        discoveryv1.LabelServiceName: serviceNN.Name,
                }); err != nil {
-               log.Errorw("failed to get endpoints for GatewayProxy provider", 
zap.Error(err), zap.Any("endpoints", serviceNN))
+               log.Error(err, "failed to get endpoints for GatewayProxy 
provider", "endpoints", serviceNN)
+
                return err
        }
        tctx.EndpointSlices[serviceNN] = esList.Items
diff --git a/internal/manager/readiness/manager.go 
b/internal/manager/readiness/manager.go
index 7ba4b83b..eca380eb 100644
--- a/internal/manager/readiness/manager.go
+++ b/internal/manager/readiness/manager.go
@@ -24,8 +24,7 @@ import (
        "sync/atomic"
        "time"
 
-       "github.com/api7/gopkg/pkg/log"
-       "go.uber.org/zap"
+       "github.com/go-logr/logr"
        "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
        "k8s.io/apimachinery/pkg/runtime/schema"
        k8stypes "k8s.io/apimachinery/pkg/types"
@@ -79,16 +78,19 @@ type readinessManager struct {
        done      chan struct{}
 
        isReady atomic.Bool
+
+       log logr.Logger
 }
 
 // ReadinessManager tracks readiness of specific resources across the cluster.
-func NewReadinessManager(client client.Client) ReadinessManager {
+func NewReadinessManager(client client.Client, log logr.Logger) 
ReadinessManager {
        return &readinessManager{
                client:  client,
                state:   
make(map[schema.GroupVersionKind]map[k8stypes.NamespacedName]struct{}),
                started: make(chan struct{}),
                done:    make(chan struct{}),
                isReady: atomic.Bool{},
+               log:     log.WithName("readiness"),
        }
 }
 
@@ -123,7 +125,7 @@ func (r *readinessManager) Start(ctx context.Context) error 
{
                                        })
                                }
                                if len(expected) > 0 {
-                                       log.Debugw("registering readiness 
state", zap.Any("gvk", gvk), zap.Any("expected", expected))
+                                       r.log.V(1).Info("registering readiness 
state", "gvk", gvk, "expected", expected)
                                        r.registerState(gvk, expected)
                                }
                        }
diff --git a/internal/manager/run.go b/internal/manager/run.go
index 6adde7d7..fe16bafa 100644
--- a/internal/manager/run.go
+++ b/internal/manager/run.go
@@ -164,7 +164,7 @@ func Run(ctx context.Context, logger logr.Logger) error {
                return err
        }
 
-       readier := readiness.NewReadinessManager(mgr.GetClient())
+       readier := readiness.NewReadinessManager(mgr.GetClient(), logger)
        registerReadinessGVK(mgr.GetClient(), readier)
 
        if err := mgr.Add(readier); err != nil {
@@ -179,12 +179,13 @@ func Run(ctx context.Context, logger logr.Logger) error {
 
        providerType := string(config.ControllerConfig.ProviderConfig.Type)
 
-       provider, err := provider.New(providerType, updater.Writer(), readier, 
&provider.Options{
+       providerOptions := &provider.Options{
                SyncTimeout:   config.ControllerConfig.ExecADCTimeout.Duration,
                SyncPeriod:    
config.ControllerConfig.ProviderConfig.SyncPeriod.Duration,
                InitSyncDelay: 
config.ControllerConfig.ProviderConfig.InitSyncDelay.Duration,
                BackendMode:   
string(config.ControllerConfig.ProviderConfig.Type),
-       })
+       }
+       provider, err := provider.New(providerType, logger, updater.Writer(), 
readier, providerOptions)
        if err != nil {
                setupLog.Error(err, "unable to create provider")
                return err
diff --git a/internal/provider/apisix/provider.go 
b/internal/provider/apisix/provider.go
index 188e6c2c..64d694c8 100644
--- a/internal/provider/apisix/provider.go
+++ b/internal/provider/apisix/provider.go
@@ -23,8 +23,7 @@ import (
        "sync"
        "time"
 
-       "github.com/api7/gopkg/pkg/log"
-       "go.uber.org/zap"
+       "github.com/go-logr/logr"
        networkingv1 "k8s.io/api/networking/v1"
        "sigs.k8s.io/controller-runtime/pkg/client"
        gatewayv1 "sigs.k8s.io/gateway-api/apis/v1"
@@ -67,16 +66,17 @@ type apisixProvider struct {
        syncCh chan struct{}
 
        client *adcclient.Client
+       log    logr.Logger
 }
 
-func New(updater status.Updater, readier readiness.ReadinessManager, opts 
...provider.Option) (provider.Provider, error) {
+func New(log logr.Logger, updater status.Updater, readier 
readiness.ReadinessManager, opts ...provider.Option) (provider.Provider, error) 
{
        o := provider.Options{}
        o.ApplyOptions(opts)
        if o.BackendMode == "" {
                o.BackendMode = ProviderTypeAPISIX
        }
 
-       cli, err := adcclient.New(o.BackendMode, o.SyncTimeout)
+       cli, err := adcclient.New(log, o.BackendMode, o.SyncTimeout)
        if err != nil {
                return nil, err
        }
@@ -84,10 +84,11 @@ func New(updater status.Updater, readier 
readiness.ReadinessManager, opts ...pro
        return &apisixProvider{
                client:     cli,
                Options:    o,
-               translator: &translator.Translator{},
+               translator: translator.NewTranslator(log),
                updater:    updater,
                readier:    readier,
                syncCh:     make(chan struct{}, 1),
+               log:        log.WithName("provider"),
        }, nil
 }
 
@@ -96,7 +97,7 @@ func (d *apisixProvider) Register(pathPrefix string, mux 
*http.ServeMux) {
 }
 
 func (d *apisixProvider) Update(ctx context.Context, tctx 
*provider.TranslateContext, obj client.Object) error {
-       log.Debugw("updating object", zap.Any("object", obj))
+       d.log.V(1).Info("updating object", "object", obj)
        var (
                result        *translator.TranslateResult
                resourceTypes []string
@@ -177,13 +178,13 @@ func (d *apisixProvider) Update(ctx context.Context, tctx 
*provider.TranslateCon
                        Consumers:      result.Consumers,
                },
        }
-       log.Debugw("updating config", zap.Any("task", task))
+       d.log.V(1).Info("updating config", "task", task)
 
        return d.client.UpdateConfig(ctx, task)
 }
 
 func (d *apisixProvider) Delete(ctx context.Context, obj client.Object) error {
-       log.Debugw("deleting object", zap.Any("object", obj))
+       d.log.V(1).Info("deleting object", "object", obj)
 
        var resourceTypes []string
        var labels map[string]string
@@ -270,7 +271,7 @@ func (d *apisixProvider) Start(ctx context.Context) error {
                        return nil
                }
                if err := d.sync(ctx); err != nil {
-                       log.Error(err)
+                       d.log.Error(err, "failed to sync")
                        retrier.Next()
                } else {
                        retrier.Reset()
@@ -294,7 +295,7 @@ func (d *apisixProvider) syncNotify() {
 func (d *apisixProvider) handleADCExecutionErrors(statusesMap 
map[string]types.ADCExecutionErrors) {
        statusUpdateMap := d.resolveADCExecutionErrors(statusesMap)
        d.handleStatusUpdate(statusUpdateMap)
-       log.Debugw("handled ADC execution errors", zap.Any("status_record", 
statusesMap), zap.Any("status_update", statusUpdateMap))
+       d.log.V(1).Info("handled ADC execution errors", "status_record", 
statusesMap, "status_update", statusUpdateMap)
 }
 
 func (d *apisixProvider) NeedLeaderElection() bool {
diff --git a/internal/provider/apisix/status.go 
b/internal/provider/apisix/status.go
index 3bc3dcd6..9a2824a8 100644
--- a/internal/provider/apisix/status.go
+++ b/internal/provider/apisix/status.go
@@ -21,8 +21,6 @@ import (
        "fmt"
        "strings"
 
-       "github.com/api7/gopkg/pkg/log"
-       "go.uber.org/zap"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "sigs.k8s.io/controller-runtime/pkg/client"
        gatewayv1 "sigs.k8s.io/gateway-api/apis/v1"
@@ -113,7 +111,7 @@ func (d *apisixProvider) updateStatus(nnk 
types.NamespacedNameKind, condition me
                })
        case types.KindHTTPRoute:
                parentRefs := 
d.client.ConfigManager.GetConfigRefsByResourceKey(nnk)
-               log.Debugw("updating HTTPRoute status", zap.Any("parentRefs", 
parentRefs))
+               d.log.V(1).Info("updating HTTPRoute status", "parentRefs", 
parentRefs)
                gatewayRefs := map[types.NamespacedNameKind]struct{}{}
                for _, parentRef := range parentRefs {
                        if parentRef.Kind == types.KindGateway {
@@ -148,7 +146,7 @@ func (d *apisixProvider) updateStatus(nnk 
types.NamespacedNameKind, condition me
                })
        case types.KindUDPRoute:
                parentRefs := 
d.client.ConfigManager.GetConfigRefsByResourceKey(nnk)
-               log.Debugw("updating UDPRoute status", zap.Any("parentRefs", 
parentRefs))
+               d.log.V(1).Info("updating UDPRoute status", "parentRefs", 
parentRefs)
                gatewayRefs := map[types.NamespacedNameKind]struct{}{}
                for _, parentRef := range parentRefs {
                        if parentRef.Kind == types.KindGateway {
@@ -183,7 +181,7 @@ func (d *apisixProvider) updateStatus(nnk 
types.NamespacedNameKind, condition me
                })
        case types.KindTCPRoute:
                parentRefs := 
d.client.ConfigManager.GetConfigRefsByResourceKey(nnk)
-               log.Debugw("updating TCPRoute status", zap.Any("parentRefs", 
parentRefs))
+               d.log.V(1).Info("updating TCPRoute status", "parentRefs", 
parentRefs)
                gatewayRefs := map[types.NamespacedNameKind]struct{}{}
                for _, parentRef := range parentRefs {
                        if parentRef.Kind == types.KindGateway {
@@ -218,7 +216,7 @@ func (d *apisixProvider) updateStatus(nnk 
types.NamespacedNameKind, condition me
                })
        case types.KindGRPCRoute:
                parentRefs := 
d.client.ConfigManager.GetConfigRefsByResourceKey(nnk)
-               log.Debugw("updating GRPCRoute status", zap.Any("parentRefs", 
parentRefs))
+               d.log.V(1).Info("updating GRPCRoute status", "parentRefs", 
parentRefs)
                gatewayRefs := map[types.NamespacedNameKind]struct{}{}
                for _, parentRef := range parentRefs {
                        if parentRef.Kind == types.KindGateway {
@@ -280,7 +278,7 @@ func (d *apisixProvider) handleEmptyFailedStatuses(
 ) {
        resource, err := d.client.GetResources(configName)
        if err != nil {
-               log.Errorw("failed to get resources from store", 
zap.String("configName", configName), zap.Error(err))
+               d.log.Error(err, "failed to get resources from store", 
"configName", configName)
                return
        }
 
@@ -298,7 +296,7 @@ func (d *apisixProvider) handleEmptyFailedStatuses(
 
        globalRules, err := d.client.ListGlobalRules(configName)
        if err != nil {
-               log.Errorw("failed to list global rules", 
zap.String("configName", configName), zap.Error(err))
+               d.log.Error(err, "failed to list global rules", "configName", 
configName)
                return
        }
        for _, rule := range globalRules {
@@ -320,11 +318,10 @@ func (d *apisixProvider) handleDetailedFailedStatuses(
                id := status.Event.ResourceID
                labels, err := d.client.GetResourceLabel(configName, 
status.Event.ResourceType, id)
                if err != nil {
-                       log.Errorw("failed to get resource label",
-                               zap.String("configName", configName),
-                               zap.String("resourceType", 
status.Event.ResourceType),
-                               zap.String("id", id),
-                               zap.Error(err),
+                       d.log.Error(err, "failed to get resource label",
+                               "configName", configName,
+                               "resourceType", status.Event.ResourceType,
+                               "id", id,
                        )
                        continue
                }
diff --git a/internal/provider/init/init.go b/internal/provider/init/init.go
index 3fc68912..b6ed9e99 100644
--- a/internal/provider/init/init.go
+++ b/internal/provider/init/init.go
@@ -22,13 +22,19 @@ import (
        "github.com/apache/apisix-ingress-controller/internal/manager/readiness"
        "github.com/apache/apisix-ingress-controller/internal/provider"
        "github.com/apache/apisix-ingress-controller/internal/provider/apisix"
+       "github.com/go-logr/logr"
 )
 
 func init() {
        provider.Register("apisix", apisix.New)
-       provider.Register("apisix-standalone", func(statusUpdater 
status.Updater, readinessManager readiness.ReadinessManager, opts 
...provider.Option) (provider.Provider, error) {
-               opts = append(opts, 
provider.WithBackendMode("apisix-standalone"))
-               opts = append(opts, provider.WithResolveEndpoints())
-               return apisix.New(statusUpdater, readinessManager, opts...)
-       })
+       provider.Register("apisix-standalone",
+               func(log logr.Logger,
+                       statusUpdater status.Updater,
+                       readinessManager readiness.ReadinessManager,
+                       opts ...provider.Option,
+               ) (provider.Provider, error) {
+                       opts = append(opts, 
provider.WithBackendMode("apisix-standalone"))
+                       opts = append(opts, provider.WithResolveEndpoints())
+                       return apisix.New(log, statusUpdater, readinessManager, 
opts...)
+               })
 }
diff --git a/internal/provider/options.go b/internal/provider/options.go
index 540f2e63..379e8a0b 100644
--- a/internal/provider/options.go
+++ b/internal/provider/options.go
@@ -17,7 +17,9 @@
 
 package provider
 
-import "time"
+import (
+       "time"
+)
 
 type Option interface {
        ApplyToList(*Options)
diff --git a/internal/provider/register.go b/internal/provider/register.go
index 25cc670d..fddb1af5 100644
--- a/internal/provider/register.go
+++ b/internal/provider/register.go
@@ -23,13 +23,14 @@ import (
 
        "github.com/apache/apisix-ingress-controller/internal/controller/status"
        "github.com/apache/apisix-ingress-controller/internal/manager/readiness"
+       "github.com/go-logr/logr"
 )
 
 type RegisterHandler interface {
        Register(pathPrefix string, mux *http.ServeMux)
 }
 
-type RegisterFunc func(status.Updater, readiness.ReadinessManager, ...Option) 
(Provider, error)
+type RegisterFunc func(logr.Logger, status.Updater, 
readiness.ReadinessManager, ...Option) (Provider, error)
 
 var providers = map[string]RegisterFunc{}
 
@@ -45,10 +46,16 @@ func Get(name string) (RegisterFunc, error) {
        return f, nil
 }
 
-func New(providerType string, updater status.Updater, readinesser 
readiness.ReadinessManager, opts ...Option) (Provider, error) {
+func New(
+       providerType string,
+       log logr.Logger,
+       updater status.Updater,
+       readinesser readiness.ReadinessManager,
+       opts ...Option,
+) (Provider, error) {
        f, err := Get(providerType)
        if err != nil {
                return nil, fmt.Errorf("failed to get provider %q: %w", 
providerType, err)
        }
-       return f(updater, readinesser, opts...)
+       return f(log, updater, readinesser, opts...)
 }

Reply via email to