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)
}