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

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


The following commit(s) were added to refs/heads/develop by this push:
     new 3dc377fa6 feat: logger module refactorization (#2838)
3dc377fa6 is described below

commit 3dc377fa6add9f9617e0df534dc4fabe22c9189d
Author: Tom <[email protected]>
AuthorDate: Mon May 19 18:42:29 2025 +0800

    feat: logger module refactorization (#2838)
    
    * feat: refactor logger module
    
    * Update logger/logger.go
    
    improve comment
    
    Co-authored-by: Copilot <[email protected]>
    
    * fix: NewDefault not set DynamicLevel
    
    * re-run ci
    
    * update gost version
    
    * fix: update golangci-lint to v2 and fix the issues detected by it(#2850) 
(#2878)
    
    * update golangci-lint to v2 and fix the issues detected by it
    
    * change .github\workflows\golangci-lint.yml
    
    * change .github\workflows\golangci-lint.yml
    
    * change .github\workflows\golangci-lint.yml
    
    * fix issues detected by golangci-lint
    
    * feat: Delete useless docs (#2880) (#2881)
    
    * fix lint error
    
    ---------
    
    Co-authored-by: foghost <[email protected]>
    Co-authored-by: Copilot <[email protected]>
    Co-authored-by: ALSoryu <[email protected]>
    Co-authored-by: xuzhijvn <[email protected]>
---
 Makefile                                     |  4 +-
 common/extension/logger.go                   |  3 +-
 config/config_loader.go                      |  5 +-
 go.mod                                       |  9 ++--
 go.sum                                       | 12 ++---
 common/extension/logger.go => logger/base.go | 38 +++++++-------
 logger/{logger.go => core/file.go}           |  2 +-
 logger/{ => core}/logrus/logrus.go           | 54 ++------------------
 logger/{ => core}/zap/zap.go                 | 75 ++++++----------------------
 logger/logger.go                             | 71 +++++++++++++++++++++-----
 10 files changed, 114 insertions(+), 159 deletions(-)

diff --git a/Makefile b/Makefile
index 5a6e7e19d..c2dca5128 100644
--- a/Makefile
+++ b/Makefile
@@ -76,14 +76,14 @@ fmt:
 LOCALBIN ?= $(shell pwd)/bin
 $(LOCALBIN):
        mkdir -p $(LOCALBIN)
-GOLANG_LINT_VERSION ?= v1.64.8
+GOLANG_LINT_VERSION ?= v2.1.6
 GOLANG_LINT ?= $(LOCALBIN)/golangci-lint
 GOLANG_LINT_INSTALL_SCRIPT ?= 
"https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh";
 
 .PHONY: golangci-lint-install
 golangci-lint-install: $(LOCALBIN) ## Download golangci lint locally if 
necessary.
        test -s $(LOCALBIN)/golangci-lint  && $(LOCALBIN)/golangci-lint 
--version | grep -q $(GOLANG_LINT_VERSION) || \
-       GOBIN=$(LOCALBIN) go install 
github.com/golangci/golangci-lint/cmd/golangci-lint@$(GOLANG_LINT_VERSION)
+       GOBIN=$(LOCALBIN) go install 
github.com/golangci/golangci-lint/v2/cmd/golangci-lint@$(GOLANG_LINT_VERSION)
 
 .PHONY: lint
 lint: golangci-lint-install  ## Run golang lint against code
diff --git a/common/extension/logger.go b/common/extension/logger.go
index 1010c5dc6..fab8864b1 100644
--- a/common/extension/logger.go
+++ b/common/extension/logger.go
@@ -18,13 +18,12 @@
 package extension
 
 import (
-       "github.com/dubbogo/gost/log/logger"
-
        "github.com/pkg/errors"
 )
 
 import (
        "dubbo.apache.org/dubbo-go/v3/common"
+       "dubbo.apache.org/dubbo-go/v3/logger"
 )
 
 var logs = make(map[string]func(config *common.URL) (logger.Logger, error))
diff --git a/config/config_loader.go b/config/config_loader.go
index 128720949..c76dacb40 100644
--- a/config/config_loader.go
+++ b/config/config_loader.go
@@ -29,7 +29,10 @@ import (
 
 import (
        "dubbo.apache.org/dubbo-go/v3/common"
-       "dubbo.apache.org/dubbo-go/v3/logger/zap"
+
+       // logrus needs to be imported in order to call its init() function
+       _ "dubbo.apache.org/dubbo-go/v3/logger/core/logrus"
+       "dubbo.apache.org/dubbo-go/v3/logger/core/zap"
 )
 
 var (
diff --git a/go.mod b/go.mod
index a34f79b3b..c4c090bba 100644
--- a/go.mod
+++ b/go.mod
@@ -13,7 +13,7 @@ require (
        github.com/dop251/goja v0.0.0-20240220182346-e401ed450204
        github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d
        github.com/dubbogo/go-zookeeper v1.0.4-0.20211212162352-f9d2183d89d5
-       github.com/dubbogo/gost v1.14.0
+       github.com/dubbogo/gost v1.14.1
        github.com/dubbogo/grpc-go v1.42.10
        github.com/dubbogo/triple v1.2.2-rc4
        github.com/dustin/go-humanize v1.0.1
@@ -36,6 +36,7 @@ require (
        github.com/mitchellh/mapstructure v1.5.0
        github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
        github.com/nacos-group/nacos-sdk-go/v2 v2.2.2
+       github.com/natefinch/lumberjack v2.0.0+incompatible
        github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852
        github.com/opentracing/opentracing-go v1.2.0
        github.com/pkg/errors v0.9.1
@@ -60,7 +61,7 @@ require (
        go.uber.org/atomic v1.10.0
        go.uber.org/zap v1.21.0
        golang.org/x/net v0.23.0
-       google.golang.org/grpc v1.52.0
+       google.golang.org/grpc v1.56.3
        google.golang.org/protobuf v1.30.0
        gopkg.in/natefinch/lumberjack.v2 v2.2.1
        gopkg.in/yaml.v2 v2.4.0
@@ -84,7 +85,6 @@ require (
        github.com/go-playground/universal-translator v0.18.1 // indirect
        github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect
        github.com/gogo/protobuf v1.3.2 // indirect
-       github.com/golang/glog v1.1.0 // indirect
        github.com/golang/snappy v0.0.4 // indirect
        github.com/google/pprof v0.0.0-20230207041349-798e818bf904 // indirect
        github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99 // 
indirect
@@ -104,7 +104,6 @@ require (
        github.com/mitchellh/reflectwalk v1.0.2 // indirect
        github.com/modern-go/reflect2 v1.0.2 // indirect
        github.com/mschoch/smat v0.2.0 // indirect
-       github.com/natefinch/lumberjack v2.0.0+incompatible // indirect
        github.com/openzipkin/zipkin-go v0.4.0 // indirect
        github.com/pelletier/go-toml v1.9.3 // indirect
        github.com/pierrec/lz4 v2.6.1+incompatible // indirect
@@ -131,7 +130,7 @@ require (
        golang.org/x/sys v0.18.0 // indirect
        golang.org/x/text v0.14.0 // indirect
        golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9 // indirect
-       google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef // 
indirect
+       google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // 
indirect
        gopkg.in/ini.v1 v1.66.2 // indirect
        gopkg.in/yaml.v3 v3.0.1 // indirect
 )
diff --git a/go.sum b/go.sum
index 9a8bef180..777301f4c 100644
--- a/go.sum
+++ b/go.sum
@@ -175,8 +175,8 @@ github.com/dubbogo/go-zookeeper 
v1.0.4-0.20211212162352-f9d2183d89d5/go.mod h1:f
 github.com/dubbogo/gost v1.9.0/go.mod 
h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8=
 github.com/dubbogo/gost v1.11.18/go.mod 
h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI=
 github.com/dubbogo/gost v1.13.1/go.mod 
h1:9HMXBv+WBMRWhF3SklpqDjkS/01AKWm2SrVdz/A0xJI=
-github.com/dubbogo/gost v1.14.0 h1:yc5YfozvUBAChAox8H7CkmHb6/TvF6cKdqZNJNv2jdE=
-github.com/dubbogo/gost v1.14.0/go.mod 
h1:YP28JweR+hhJdikP3bZ3bVKUWWI313xX1rgLaEE0FvQ=
+github.com/dubbogo/gost v1.14.1 h1:veA+5FqwUHvqaB5OPvsWz4iDkGGpyL4lig2rSOZANEs=
+github.com/dubbogo/gost v1.14.1/go.mod 
h1:m3VJVqCjQ87SwYRrxN2s4T33cOCDrMVbRh4+MAUitnQ=
 github.com/dubbogo/grpc-go v1.42.9/go.mod 
h1:F1T9hnUvYGW4JLK1QNriavpOkhusU677ovPzLkk6zHM=
 github.com/dubbogo/grpc-go v1.42.10 
h1:CoyCdtqKJEar/3rPa6peZbDqYZ/mVsCqAxB6TfTSkhQ=
 github.com/dubbogo/grpc-go v1.42.10/go.mod 
h1:JMkPt1mIHL96GAFeYsMoMjew6f1ROKycikGzZQH1s5U=
@@ -1253,8 +1253,8 @@ google.golang.org/genproto 
v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxH
 google.golang.org/genproto v0.0.0-20211104193956-4c6863e31247/go.mod 
h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
 google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod 
h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
 google.golang.org/genproto v0.0.0-20220504150022-98cd25cafc72/go.mod 
h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
-google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef 
h1:uQ2vjV/sHTsWSqdKeLqmwitzgvjMl7o4IdtHwUDXSJY=
-google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod 
h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
+google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 
h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A=
+google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod 
h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU=
 google.golang.org/grpc v1.14.0/go.mod 
h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
 google.golang.org/grpc v1.17.0/go.mod 
h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
 google.golang.org/grpc v1.19.0/go.mod 
h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
@@ -1284,8 +1284,8 @@ google.golang.org/grpc v1.42.0/go.mod 
h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ5
 google.golang.org/grpc v1.46.0/go.mod 
h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
 google.golang.org/grpc v1.46.2/go.mod 
h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
 google.golang.org/grpc v1.48.0/go.mod 
h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
-google.golang.org/grpc v1.52.0 h1:kd48UiU7EHsV4rnLyOJRuP/Il/UHE7gdDAQ+SZI7nZk=
-google.golang.org/grpc v1.52.0/go.mod 
h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY=
+google.golang.org/grpc v1.56.3 h1:8I4C0Yq1EjstUzUJzpcRVbuYA2mODtEmpWiQoN/b2nc=
+google.golang.org/grpc v1.56.3/go.mod 
h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
 google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod 
h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
 google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod 
h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
 google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod 
h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
diff --git a/common/extension/logger.go b/logger/base.go
similarity index 56%
copy from common/extension/logger.go
copy to logger/base.go
index 1010c5dc6..ffc88caef 100644
--- a/common/extension/logger.go
+++ b/logger/base.go
@@ -15,30 +15,28 @@
  * limitations under the License.
  */
 
-package extension
+package logger
 
 import (
-       "github.com/dubbogo/gost/log/logger"
-
-       "github.com/pkg/errors"
+       "github.com/natefinch/lumberjack"
+       "go.uber.org/zap"
 )
 
-import (
-       "dubbo.apache.org/dubbo-go/v3/common"
-)
-
-var logs = make(map[string]func(config *common.URL) (logger.Logger, error))
-
-func SetLogger(driver string, log func(config *common.URL) (logger.Logger, 
error)) {
-       logs[driver] = log
+type Config struct {
+       LumberjackConfig *lumberjack.Logger `yaml:"lumberjack-config"`
+       ZapConfig        *zap.Config        `yaml:"zap-config"`
+       CallerSkip       int
 }
 
-func GetLogger(driver string, config *common.URL) (logger.Logger, error) {
-       if logs[driver] != nil {
-               return logs[driver](config)
-       } else {
-               return nil, errors.Errorf("logger for %s does not exist. "+
-                       "please make sure that you have imported the package "+
-                       "dubbo.apache.org/dubbo-go/v3/logger/%s", driver, 
driver)
-       }
+type Logger interface {
+       Debug(args ...any)
+       Debugf(template string, args ...any)
+       Info(args ...any)
+       Infof(template string, args ...any)
+       Warn(args ...any)
+       Warnf(template string, args ...any)
+       Error(args ...any)
+       Errorf(template string, args ...any)
+       Fatal(args ...any)
+       Fatalf(fmt string, args ...any)
 }
diff --git a/logger/logger.go b/logger/core/file.go
similarity index 99%
copy from logger/logger.go
copy to logger/core/file.go
index 0d7cdbd74..55fa40c0d 100644
--- a/logger/logger.go
+++ b/logger/core/file.go
@@ -16,7 +16,7 @@
  */
 
 // Package logger is unified facade provided by Dubbo to work with different 
logger frameworks, eg, Zapper, Logrus.
-package logger
+package core
 
 import (
        "gopkg.in/natefinch/lumberjack.v2"
diff --git a/logger/logrus/logrus.go b/logger/core/logrus/logrus.go
similarity index 70%
rename from logger/logrus/logrus.go
rename to logger/core/logrus/logrus.go
index ef4ae9256..196dc100d 100644
--- a/logger/logrus/logrus.go
+++ b/logger/core/logrus/logrus.go
@@ -24,10 +24,9 @@ import (
 )
 
 import (
-       "github.com/dubbogo/gost/log/logger"
+       dubbogoLogger "github.com/dubbogo/gost/log/logger"
 
        "github.com/mattn/go-colorable"
-
        "github.com/sirupsen/logrus"
 )
 
@@ -35,17 +34,14 @@ import (
        "dubbo.apache.org/dubbo-go/v3/common"
        "dubbo.apache.org/dubbo-go/v3/common/constant"
        "dubbo.apache.org/dubbo-go/v3/common/extension"
-       . "dubbo.apache.org/dubbo-go/v3/logger"
+       "dubbo.apache.org/dubbo-go/v3/logger"
+       "dubbo.apache.org/dubbo-go/v3/logger/core"
 )
 
 func init() {
        extension.SetLogger("logrus", instantiate)
 }
 
-type Logger struct {
-       lg *logrus.Logger
-}
-
 func instantiate(config *common.URL) (log logger.Logger, err error) {
        var (
                level     string
@@ -70,7 +66,7 @@ func instantiate(config *common.URL) (log logger.Logger, err 
error) {
                case "console":
                        writer = append(writer, os.Stdout)
                case "file":
-                       file := FileConfig(config)
+                       file := core.FileConfig(config)
                        writer = append(writer, colorable.NewNonColorable(file))
                }
        }
@@ -86,45 +82,5 @@ func instantiate(config *common.URL) (log logger.Logger, err 
error) {
                formatter = &logrus.TextFormatter{}
        }
        lg.SetFormatter(formatter)
-       return &Logger{lg: lg}, err
-}
-
-func (l *Logger) Debug(args ...any) {
-       l.lg.Debug(args...)
-}
-
-func (l *Logger) Debugf(template string, args ...any) {
-       l.lg.Debugf(template, args...)
-}
-
-func (l *Logger) Info(args ...any) {
-       l.lg.Info(args...)
-}
-
-func (l *Logger) Infof(template string, args ...any) {
-       l.lg.Infof(template, args...)
-}
-
-func (l *Logger) Warn(args ...any) {
-       l.lg.Warn(args...)
-}
-
-func (l *Logger) Warnf(template string, args ...any) {
-       l.lg.Warnf(template, args...)
-}
-
-func (l *Logger) Error(args ...any) {
-       l.lg.Error(args...)
-}
-
-func (l *Logger) Errorf(template string, args ...any) {
-       l.lg.Errorf(template, args...)
-}
-
-func (l *Logger) Fatal(args ...any) {
-       l.lg.Fatal(args...)
-}
-
-func (l *Logger) Fatalf(fmt string, args ...any) {
-       l.lg.Fatalf(fmt, args...)
+       return &dubbogoLogger.DubboLogger{Logger: lg}, err
 }
diff --git a/logger/zap/zap.go b/logger/core/zap/zap.go
similarity index 69%
rename from logger/zap/zap.go
rename to logger/core/zap/zap.go
index 98cf1ebdd..e3be7d1f6 100644
--- a/logger/zap/zap.go
+++ b/logger/core/zap/zap.go
@@ -23,10 +23,9 @@ import (
 )
 
 import (
-       "github.com/dubbogo/gost/log/logger"
+       dubbogoLogger "github.com/dubbogo/gost/log/logger"
 
        "github.com/mattn/go-colorable"
-
        "go.uber.org/zap"
        "go.uber.org/zap/zapcore"
 )
@@ -35,7 +34,8 @@ import (
        "dubbo.apache.org/dubbo-go/v3/common"
        "dubbo.apache.org/dubbo-go/v3/common/constant"
        "dubbo.apache.org/dubbo-go/v3/common/extension"
-       . "dubbo.apache.org/dubbo-go/v3/logger"
+       "dubbo.apache.org/dubbo-go/v3/logger"
+       "dubbo.apache.org/dubbo-go/v3/logger/core"
 )
 
 func init() {
@@ -62,7 +62,7 @@ func instantiate(config *common.URL) (log logger.Logger, err 
error) {
                case "console":
                        sync = append(sync, zapcore.AddSync(os.Stdout))
                case "file":
-                       file := FileConfig(config)
+                       file := core.FileConfig(config)
                        sync = append(sync, 
zapcore.AddSync(colorable.NewNonColorable(file)))
                }
        }
@@ -79,68 +79,23 @@ func instantiate(config *common.URL) (log logger.Logger, 
err error) {
                encoder = zapcore.NewConsoleEncoder(encoderConfig())
        }
 
-       log = zap.New(zapcore.NewCore(encoder, 
zapcore.NewMultiWriteSyncer(sync...), lv),
-               zap.AddCaller(), zap.AddCallerSkip(1)).Sugar()
-       return log, nil
-}
-
-type Logger struct {
-       lg *zap.SugaredLogger
+       zapAtomicLevel := zap.NewAtomicLevelAt(lv)
+       log = zap.New(zapcore.NewCore(
+               encoder, zapcore.NewMultiWriteSyncer(sync...), zapAtomicLevel,
+       ), zap.AddCaller(), zap.AddCallerSkip(1)).Sugar()
+       return &dubbogoLogger.DubboLogger{Logger: log, DynamicLevel: 
zapAtomicLevel}, nil
 }
 
-func NewDefault() *Logger {
+func NewDefault() *dubbogoLogger.DubboLogger {
        var (
-               lv  zapcore.Level
-               lg  *zap.SugaredLogger
-               err error
+               lg *zap.SugaredLogger
        )
-       if lv, err = zapcore.ParseLevel("info"); err != nil {
-               lv = zapcore.InfoLevel
-       }
+
        encoder := zapcore.NewConsoleEncoder(encoderConfig())
-       lg = zap.New(zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), lv),
+       zapAtomicLevel := zap.NewAtomicLevelAt(zapcore.InfoLevel)
+       lg = zap.New(zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), 
zapAtomicLevel),
                zap.AddCaller(), zap.AddCallerSkip(2)).Sugar()
-       return &Logger{lg: lg}
-}
-
-func (l *Logger) Debug(args ...any) {
-       l.lg.Debug(args)
-}
-
-func (l *Logger) Debugf(template string, args ...any) {
-       l.lg.Debugf(template, args...)
-}
-
-func (l *Logger) Info(args ...any) {
-       l.lg.Info(args)
-}
-
-func (l *Logger) Infof(template string, args ...any) {
-       l.lg.Infof(template, args...)
-}
-
-func (l *Logger) Warn(args ...any) {
-       l.lg.Warn(args)
-}
-
-func (l *Logger) Warnf(template string, args ...any) {
-       l.lg.Warnf(template, args...)
-}
-
-func (l *Logger) Error(args ...any) {
-       l.lg.Error(args)
-}
-
-func (l *Logger) Errorf(template string, args ...any) {
-       l.lg.Errorf(template, args...)
-}
-
-func (l *Logger) Fatal(args ...any) {
-       l.lg.Fatal(args)
-}
-
-func (l *Logger) Fatalf(fmt string, args ...any) {
-       l.lg.Fatalf(fmt, args...)
+       return &dubbogoLogger.DubboLogger{Logger: lg, DynamicLevel: 
zapAtomicLevel}
 }
 
 func encoderConfig() zapcore.EncoderConfig {
diff --git a/logger/logger.go b/logger/logger.go
index 0d7cdbd74..68d2dba54 100644
--- a/logger/logger.go
+++ b/logger/logger.go
@@ -19,21 +19,66 @@
 package logger
 
 import (
-       "gopkg.in/natefinch/lumberjack.v2"
-)
+       dubbogoLogger "github.com/dubbogo/gost/log/logger"
 
-import (
-       "dubbo.apache.org/dubbo-go/v3/common"
-       "dubbo.apache.org/dubbo-go/v3/common/constant"
+       "go.uber.org/zap"
+       "go.uber.org/zap/zapcore"
 )
 
-func FileConfig(config *common.URL) *lumberjack.Logger {
-       return &lumberjack.Logger{
-               Filename:   config.GetParam(constant.LoggerFileNameKey, 
"dubbo.log"),
-               MaxSize:    
config.GetParamByIntValue(constant.LoggerFileNaxSizeKey, 1),
-               MaxBackups: 
config.GetParamByIntValue(constant.LoggerFileMaxBackupsKey, 1),
-               MaxAge:     
config.GetParamByIntValue(constant.LoggerFileMaxAgeKey, 3),
-               LocalTime:  
config.GetParamBool(constant.LoggerFileLocalTimeKey, true),
-               Compress:   config.GetParamBool(constant.LoggerFileCompressKey, 
true),
+var logger Logger
+
+func init() {
+       dubbogoLogger.InitLogger(nil)
+}
+
+// SetLogger sets logger for dubbo and getty
+func SetLogger(log Logger) {
+       logger = log
+}
+
+// GetLogger gets the loggerF
+func GetLogger() Logger {
+       return logger
+}
+
+// SetLoggerLevel is used to set the logger level.
+func SetLoggerLevel(level string) bool {
+       if l, ok := logger.(OpsLogger); ok {
+               return l.SetLoggerLevel(level)
        }
+       return false
+}
+
+// OpsLogger use for the SetLoggerLevel
+type OpsLogger interface {
+       Logger
+       SetLoggerLevel(level string) bool
+}
+
+// initZapLoggerWithSyncer init zap Logger with syncer
+func initZapLoggerWithSyncer(conf *Config) *zap.Logger {
+       core := zapcore.NewCore(
+               conf.getEncoder(),
+               conf.getLogWriter(),
+               zap.NewAtomicLevelAt(conf.ZapConfig.Level.Level()),
+       )
+
+       return zap.New(core, zap.AddCaller(), 
zap.AddCallerSkip(conf.CallerSkip))
+}
+
+// getEncoder get encoder by config, zapcore support json and console encoder
+func (c *Config) getEncoder() zapcore.Encoder {
+       switch c.ZapConfig.Encoding {
+       case "json":
+               return zapcore.NewJSONEncoder(c.ZapConfig.EncoderConfig)
+       case "console":
+               return zapcore.NewConsoleEncoder(c.ZapConfig.EncoderConfig)
+       default:
+               return nil
+       }
+}
+
+// getLogWriter get Lumberjack writer by LumberjackConfig
+func (c *Config) getLogWriter() zapcore.WriteSyncer {
+       return zapcore.AddSync(c.LumberjackConfig)
 }

Reply via email to