From c23c0c2d0ada0ac63ef73e5aaece8ae7bb86759b Mon Sep 17 00:00:00 2001 From: "binbin.zhang" Date: Wed, 6 Apr 2022 18:57:27 +0800 Subject: [PATCH] refine custom logger (#436) --- .gitignore | 1 - .../cache/config/go1.17.5CancelOne1@@group1@@ | 1 - .../cache/config/go1.17.5CancelOne@@group@@ | 1 - ...o1.17.5ConfigNoChange@@go1.17.5group:env@@ | 1 - ...1.17.5MultipleClients@@go1.17.5group:env@@ | 1 - ...ClientsMultipleConfig@@go1.17.5group:env@@ | 1 - ...5cancel_listen_config@@go1.17.5group:env@@ | 1 - .../go1.17.5dataId@@go1.17.5group:env@@ | 0 .../cache/config/go1.17.5dataId@@group@@ | 1 - ...o1.17.5special_symbol@@go1.17.5group:env@@ | 1 - clients/config_client/config_client.go | 5 +- clients/naming_client/naming_client.go | 20 ++++--- common/constant/client_config_options.go | 5 +- common/constant/config.go | 2 +- common/constant/log.go | 1 - common/logger/logger.go | 53 ++++++++++--------- common/logger/logger_test.go | 6 +-- example/service/main.go | 3 +- 18 files changed, 52 insertions(+), 52 deletions(-) delete mode 100644 clients/config_client/cache/config/go1.17.5CancelOne1@@group1@@ delete mode 100644 clients/config_client/cache/config/go1.17.5CancelOne@@group@@ delete mode 100644 clients/config_client/cache/config/go1.17.5ConfigNoChange@@go1.17.5group:env@@ delete mode 100644 clients/config_client/cache/config/go1.17.5MultipleClients@@go1.17.5group:env@@ delete mode 100644 clients/config_client/cache/config/go1.17.5MultipleClientsMultipleConfig@@go1.17.5group:env@@ delete mode 100644 clients/config_client/cache/config/go1.17.5cancel_listen_config@@go1.17.5group:env@@ delete mode 100644 clients/config_client/cache/config/go1.17.5dataId@@go1.17.5group:env@@ delete mode 100644 clients/config_client/cache/config/go1.17.5dataId@@group@@ delete mode 100644 clients/config_client/cache/config/go1.17.5special_symbol@@go1.17.5group:env@@ delete mode 100644 common/constant/log.go diff --git a/.gitignore b/.gitignore index f5da3191..e54cedf9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ .idea .data -cache/ diff --git a/clients/config_client/cache/config/go1.17.5CancelOne1@@group1@@ b/clients/config_client/cache/config/go1.17.5CancelOne1@@group1@@ deleted file mode 100644 index 607b6412..00000000 --- a/clients/config_client/cache/config/go1.17.5CancelOne1@@group1@@ +++ /dev/null @@ -1 +0,0 @@ -abcd5 \ No newline at end of file diff --git a/clients/config_client/cache/config/go1.17.5CancelOne@@group@@ b/clients/config_client/cache/config/go1.17.5CancelOne@@group@@ deleted file mode 100644 index 9ea850b7..00000000 --- a/clients/config_client/cache/config/go1.17.5CancelOne@@group@@ +++ /dev/null @@ -1 +0,0 @@ -abcd2 \ No newline at end of file diff --git a/clients/config_client/cache/config/go1.17.5ConfigNoChange@@go1.17.5group:env@@ b/clients/config_client/cache/config/go1.17.5ConfigNoChange@@go1.17.5group:env@@ deleted file mode 100644 index 6b584e8e..00000000 --- a/clients/config_client/cache/config/go1.17.5ConfigNoChange@@go1.17.5group:env@@ +++ /dev/null @@ -1 +0,0 @@ -content \ No newline at end of file diff --git a/clients/config_client/cache/config/go1.17.5MultipleClients@@go1.17.5group:env@@ b/clients/config_client/cache/config/go1.17.5MultipleClients@@go1.17.5group:env@@ deleted file mode 100644 index 6b584e8e..00000000 --- a/clients/config_client/cache/config/go1.17.5MultipleClients@@go1.17.5group:env@@ +++ /dev/null @@ -1 +0,0 @@ -content \ No newline at end of file diff --git a/clients/config_client/cache/config/go1.17.5MultipleClientsMultipleConfig@@go1.17.5group:env@@ b/clients/config_client/cache/config/go1.17.5MultipleClientsMultipleConfig@@go1.17.5group:env@@ deleted file mode 100644 index 6b584e8e..00000000 --- a/clients/config_client/cache/config/go1.17.5MultipleClientsMultipleConfig@@go1.17.5group:env@@ +++ /dev/null @@ -1 +0,0 @@ -content \ No newline at end of file diff --git a/clients/config_client/cache/config/go1.17.5cancel_listen_config@@go1.17.5group:env@@ b/clients/config_client/cache/config/go1.17.5cancel_listen_config@@go1.17.5group:env@@ deleted file mode 100644 index 6b584e8e..00000000 --- a/clients/config_client/cache/config/go1.17.5cancel_listen_config@@go1.17.5group:env@@ +++ /dev/null @@ -1 +0,0 @@ -content \ No newline at end of file diff --git a/clients/config_client/cache/config/go1.17.5dataId@@go1.17.5group:env@@ b/clients/config_client/cache/config/go1.17.5dataId@@go1.17.5group:env@@ deleted file mode 100644 index e69de29b..00000000 diff --git a/clients/config_client/cache/config/go1.17.5dataId@@group@@ b/clients/config_client/cache/config/go1.17.5dataId@@group@@ deleted file mode 100644 index 75d8b0c8..00000000 --- a/clients/config_client/cache/config/go1.17.5dataId@@group@@ +++ /dev/null @@ -1 +0,0 @@ -hello world!222222 \ No newline at end of file diff --git a/clients/config_client/cache/config/go1.17.5special_symbol@@go1.17.5group:env@@ b/clients/config_client/cache/config/go1.17.5special_symbol@@go1.17.5group:env@@ deleted file mode 100644 index 87f48e2a..00000000 --- a/clients/config_client/cache/config/go1.17.5special_symbol@@go1.17.5group:env@@ +++ /dev/null @@ -1 +0,0 @@ -hello world!!@#$%^&&*() \ No newline at end of file diff --git a/clients/config_client/config_client.go b/clients/config_client/config_client.go index da1e3b3b..e394701a 100644 --- a/clients/config_client/config_client.go +++ b/clients/config_client/config_client.go @@ -102,11 +102,11 @@ func NewConfigClient(nc nacos_client.INacosClient) (*ConfigClient, error) { LogDir: clientConfig.LogDir, CustomLogger: clientConfig.CustomLogger, } - err = logger.InitLogger(logger.BuildLoggerConfig(loggerConfig)) + err = logger.InitLogger(loggerConfig) if err != nil { return config, err } - + logger.GetLogger().Infof("logDir:<%s> cacheDir:<%s>", clientConfig.LogDir, clientConfig.CacheDir) config.configCacheDir = clientConfig.CacheDir + string(os.PathSeparator) + "config" config.configProxy, err = NewConfigProxy(serverConfig, clientConfig, httpAgent) if clientConfig.OpenKMS { @@ -116,7 +116,6 @@ func NewConfigClient(nc nacos_client.INacosClient) (*ConfigClient, error) { } config.kmsClient = kmsClient } - logger.GetLogger().Infof("logDir:<%s> cacheDir:<%s>", clientConfig.LogDir, clientConfig.CacheDir) return config, err } diff --git a/clients/naming_client/naming_client.go b/clients/naming_client/naming_client.go index 86c272fb..7a469351 100644 --- a/clients/naming_client/naming_client.go +++ b/clients/naming_client/naming_client.go @@ -75,10 +75,11 @@ func NewNamingClient(nc nacos_client.INacosClient) (NamingClient, error) { LogDir: clientConfig.LogDir, CustomLogger: clientConfig.CustomLogger, } - err = logger.InitLogger(logger.BuildLoggerConfig(loggerConfig)) + err = logger.InitLogger(loggerConfig) if err != nil { return naming, err } + logger.GetLogger().Infof("logDir:<%s> cacheDir:<%s>", clientConfig.LogDir, clientConfig.CacheDir) naming.subCallback = NewSubscribeCallback() naming.serviceProxy, err = NewNamingProxy(clientConfig, serverConfig, httpAgent) if err != nil { @@ -88,11 +89,10 @@ func NewNamingClient(nc nacos_client.INacosClient) (NamingClient, error) { clientConfig.UpdateThreadNum, clientConfig.NotLoadCacheAtStart, naming.subCallback, clientConfig.UpdateCacheWhenEmpty) naming.beatReactor = NewBeatReactor(naming.serviceProxy, clientConfig.BeatInterval) naming.indexMap = cache.NewConcurrentMap() - return naming, nil } -// 注册服务实例 +//RegisterInstance register instance func (sc *NamingClient) RegisterInstance(param vo.RegisterInstanceParam) (bool, error) { if param.ServiceName == "" { return false, errors.New("serviceName cannot be empty!") @@ -134,7 +134,7 @@ func (sc *NamingClient) RegisterInstance(param vo.RegisterInstanceParam) (bool, } -// 注销服务实例 +//DeregisterInstance deregister instance func (sc *NamingClient) DeregisterInstance(param vo.DeregisterInstanceParam) (bool, error) { if len(param.GroupName) == 0 { param.GroupName = constant.DEFAULT_GROUP @@ -148,7 +148,7 @@ func (sc *NamingClient) DeregisterInstance(param vo.DeregisterInstanceParam) (bo return true, nil } -// UpdateInstance Update information for exist instance. +//UpdateInstance update information for exist instance. func (sc *NamingClient) UpdateInstance(param vo.UpdateInstanceParam) (bool, error) { if len(param.GroupName) == 0 { param.GroupName = constant.DEFAULT_GROUP @@ -182,7 +182,7 @@ func (sc *NamingClient) UpdateInstance(param vo.UpdateInstanceParam) (bool, erro return true, nil } -// 获取服务列表 +//GetService get service info func (sc *NamingClient) GetService(param vo.GetServiceParam) (model.Service, error) { if len(param.GroupName) == 0 { param.GroupName = constant.DEFAULT_GROUP @@ -191,6 +191,7 @@ func (sc *NamingClient) GetService(param vo.GetServiceParam) (model.Service, err return service, err } +//GetAllServicesInfo get all services info func (sc *NamingClient) GetAllServicesInfo(param vo.GetAllServiceInfoParam) (model.ServiceList, error) { if len(param.GroupName) == 0 { param.GroupName = constant.DEFAULT_GROUP @@ -212,6 +213,7 @@ func (sc *NamingClient) GetAllServicesInfo(param vo.GetAllServiceInfoParam) (mod return services, nil } +//SelectAllInstances select all instances func (sc *NamingClient) SelectAllInstances(param vo.SelectAllInstancesParam) ([]model.Instance, error) { if len(param.GroupName) == 0 { param.GroupName = constant.DEFAULT_GROUP @@ -223,6 +225,7 @@ func (sc *NamingClient) SelectAllInstances(param vo.SelectAllInstancesParam) ([] return service.Hosts, err } +//SelectInstances select instances func (sc *NamingClient) SelectInstances(param vo.SelectInstancesParam) ([]model.Instance, error) { if len(param.GroupName) == 0 { param.GroupName = constant.DEFAULT_GROUP @@ -248,6 +251,7 @@ func (sc *NamingClient) selectInstances(service model.Service, healthy bool) ([] return result, nil } +//SelectOneHealthyInstance select one healthy instance func (sc *NamingClient) SelectOneHealthyInstance(param vo.SelectOneHealthInstanceParam) (*model.Instance, error) { if len(param.GroupName) == 0 { param.GroupName = constant.DEFAULT_GROUP @@ -316,7 +320,7 @@ func (chs Chooser) pick() model.Instance { return chs.data[i] } -// 服务监听 +//Subscribe subscibe service func (sc *NamingClient) Subscribe(param *vo.SubscribeParam) error { if len(param.GroupName) == 0 { param.GroupName = constant.DEFAULT_GROUP @@ -338,7 +342,7 @@ func (sc *NamingClient) Subscribe(param *vo.SubscribeParam) error { return nil } -// 取消服务监听 +//Unsubscribe unsubscribe service func (sc *NamingClient) Unsubscribe(param *vo.SubscribeParam) error { sc.subCallback.RemoveCallbackFuncs(util.GetGroupName(param.ServiceName, param.GroupName), strings.Join(param.Clusters, ","), ¶m.SubscribeCallback) return nil diff --git a/common/constant/client_config_options.go b/common/constant/client_config_options.go index f63ced59..e48f2ab5 100644 --- a/common/constant/client_config_options.go +++ b/common/constant/client_config_options.go @@ -17,11 +17,12 @@ package constant import ( + "os" + "time" + "github.com/nacos-group/nacos-sdk-go/common/file" "github.com/nacos-group/nacos-sdk-go/common/logger" "gopkg.in/natefinch/lumberjack.v2" - "os" - "time" ) func NewClientConfig(opts ...ClientOption) *ClientConfig { diff --git a/common/constant/config.go b/common/constant/config.go index 16d4e51b..222b8245 100644 --- a/common/constant/config.go +++ b/common/constant/config.go @@ -51,5 +51,5 @@ type ClientConfig struct { LogSampling *logger.SamplingConfig // the sampling config of log ContextPath string // the nacos server contextpath LogRollingConfig *lumberjack.Logger // the log rolling config - CustomLogger logger.Logger // a log interface implementation + CustomLogger logger.Logger // the custom log interface ,With a custom Logger (nacos sdk will not provide log cutting and archiving capabilities) } diff --git a/common/constant/log.go b/common/constant/log.go deleted file mode 100644 index 3f2495e1..00000000 --- a/common/constant/log.go +++ /dev/null @@ -1 +0,0 @@ -package constant diff --git a/common/logger/logger.go b/common/logger/logger.go index 5b5a5b3b..8692c7e8 100644 --- a/common/logger/logger.go +++ b/common/logger/logger.go @@ -21,10 +21,9 @@ import ( "sync" "time" - "gopkg.in/natefinch/lumberjack.v2" - "go.uber.org/zap" "go.uber.org/zap/zapcore" + "gopkg.in/natefinch/lumberjack.v2" ) var ( @@ -71,44 +70,46 @@ type Logger interface { Debugf(fmt string, args ...interface{}) } -func BuildLoggerConfig(clientConfig Config) Config { - if clientConfig.CustomLogger == nil { - clientConfig.LogRollingConfig = &lumberjack.Logger{ - Filename: clientConfig.LogDir + string(os.PathSeparator) + clientConfig.LogFileName, - } - logRollingConfig := clientConfig.LogRollingConfig - if logRollingConfig != nil { - clientConfig.LogRollingConfig.MaxSize = logRollingConfig.MaxSize - clientConfig.LogRollingConfig.MaxAge = logRollingConfig.MaxAge - clientConfig.LogRollingConfig.MaxBackups = logRollingConfig.MaxBackups - clientConfig.LogRollingConfig.LocalTime = logRollingConfig.LocalTime - clientConfig.LogRollingConfig.Compress = logRollingConfig.Compress - } +func init() { + zapLoggerConfig := zap.NewDevelopmentConfig() + zapLoggerEncoderConfig := zapcore.EncoderConfig{ + TimeKey: "time", + LevelKey: "level", + NameKey: "logger", + CallerKey: "caller", + MessageKey: "message", + StacktraceKey: "stacktrace", + EncodeLevel: zapcore.CapitalColorLevelEncoder, + EncodeTime: zapcore.ISO8601TimeEncoder, + EncodeDuration: zapcore.SecondsDurationEncoder, + EncodeCaller: zapcore.ShortCallerEncoder, } - - return clientConfig + zapLoggerConfig.EncoderConfig = zapLoggerEncoderConfig + defaultLogger, _ := zapLoggerConfig.Build(zap.AddCaller(), zap.AddCallerSkip(1)) + setLogger(&NacosLogger{defaultLogger.Sugar()}) } // InitLogger is init global logger for nacos func InitLogger(config Config) (err error) { - logLock.Lock() - defer logLock.Unlock() - logger, err = InitNacosLogger(config) + logger, err = initNacosLogger(config) + if err != nil { + return err + } + setLogger(logger) return } // InitNacosLogger is init nacos default logger -func InitNacosLogger(config Config) (Logger, error) { +func initNacosLogger(config Config) (Logger, error) { if config.CustomLogger != nil { return &NacosLogger{config.CustomLogger}, nil } logLevel := getLogLevel(config.Level) encoder := getEncoder() writer := config.getLogWriter() - + core := zapcore.NewCore(zapcore.NewConsoleEncoder(encoder), zapcore.NewMultiWriteSyncer(writer, zapcore.AddSync(os.Stdout)), logLevel) - if config.Sampling != nil { core = zapcore.NewSamplerWithOptions(core, config.Sampling.Tick, config.Sampling.Initial, config.Sampling.Thereafter) } @@ -140,7 +141,7 @@ func getEncoder() zapcore.EncoderConfig { } //SetLogger sets logger for sdk -func SetLogger(log Logger) { +func setLogger(log Logger) { logLock.Lock() defer logLock.Unlock() logger = log @@ -154,5 +155,9 @@ func GetLogger() Logger { // getLogWriter get Lumberjack writer by LumberjackConfig func (c *Config) getLogWriter() zapcore.WriteSyncer { + if c.LogRollingConfig == nil { + c.LogRollingConfig = &lumberjack.Logger{} + } + c.LogRollingConfig.Filename = c.LogDir + string(os.PathSeparator) + c.LogFileName return zapcore.AddSync(c.LogRollingConfig) } diff --git a/common/logger/logger_test.go b/common/logger/logger_test.go index 7edcbcb4..ca799cc8 100644 --- a/common/logger/logger_test.go +++ b/common/logger/logger_test.go @@ -24,7 +24,7 @@ import ( ) func reset() { - SetLogger(nil) + setLogger(nil) } func TestInitLogger(t *testing.T) { @@ -59,7 +59,7 @@ func TestSetLogger(t *testing.T) { // not yet init get default log log := GetLogger() log1 := &mockLogger{} - SetLogger(log1) + setLogger(log1) // after set logger log2 := GetLogger() @@ -82,7 +82,7 @@ func TestRaceLogger(t *testing.T) { wg.Add(3) go func() { defer wg.Done() - SetLogger(&mockLogger{}) + setLogger(&mockLogger{}) }() go func() { defer wg.Done() diff --git a/example/service/main.go b/example/service/main.go index 89cb702a..d83d4d37 100644 --- a/example/service/main.go +++ b/example/service/main.go @@ -18,13 +18,14 @@ package main import ( "fmt" + "time" + "github.com/nacos-group/nacos-sdk-go/clients" "github.com/nacos-group/nacos-sdk-go/common/constant" "github.com/nacos-group/nacos-sdk-go/model" "github.com/nacos-group/nacos-sdk-go/util" "github.com/nacos-group/nacos-sdk-go/vo" "gopkg.in/natefinch/lumberjack.v2" - "time" ) func main() {