Skip to content

Commit

Permalink
refine custom logger (nacos-group#436)
Browse files Browse the repository at this point in the history
  • Loading branch information
binbin0325 authored Apr 6, 2022
1 parent c67e862 commit c23c0c2
Show file tree
Hide file tree
Showing 18 changed files with 52 additions and 52 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
.idea
.data
cache/

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Empty file.
1 change: 0 additions & 1 deletion clients/config_client/cache/config/go1.17.5dataId@@group@@

This file was deleted.

This file was deleted.

5 changes: 2 additions & 3 deletions clients/config_client/config_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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
}

Expand Down
20 changes: 12 additions & 8 deletions clients/naming_client/naming_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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!")
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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, ","), &param.SubscribeCallback)
return nil
Expand Down
5 changes: 3 additions & 2 deletions common/constant/client_config_options.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion common/constant/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
1 change: 0 additions & 1 deletion common/constant/log.go

This file was deleted.

53 changes: 29 additions & 24 deletions common/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand Down Expand Up @@ -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)
}
Expand Down Expand Up @@ -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
Expand All @@ -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)
}
6 changes: 3 additions & 3 deletions common/logger/logger_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import (
)

func reset() {
SetLogger(nil)
setLogger(nil)
}

func TestInitLogger(t *testing.T) {
Expand Down Expand Up @@ -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()
Expand All @@ -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()
Expand Down
3 changes: 2 additions & 1 deletion example/service/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down

0 comments on commit c23c0c2

Please sign in to comment.