Skip to content

Commit

Permalink
fix: resolve the contention issue in internal logger
Browse files Browse the repository at this point in the history
  • Loading branch information
panjf2000 committed Jun 28, 2021
1 parent 1a87541 commit 8aeb278
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 21 deletions.
6 changes: 3 additions & 3 deletions eventloop_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -285,8 +285,8 @@ func (el *eventloop) loopTicker(ctx context.Context) {
switch action {
case None:
case Shutdown:
err := el.poller.Trigger(func() error { return gerrors.ErrServerShutdown })
logging.Debugf("stopping ticker in event-loop(%d) from Tick(), Trigger:%v", el.idx, err)
_ = el.poller.Trigger(func() error { return gerrors.ErrServerShutdown })
// logging.Debugf("stopping ticker in event-loop(%d) from Tick(), Trigger:%v", el.idx, err)
}
if timer == nil {
timer = time.NewTimer(delay)
Expand All @@ -295,7 +295,7 @@ func (el *eventloop) loopTicker(ctx context.Context) {
}
select {
case <-ctx.Done():
logging.Debugf("stopping ticker in event-loop(%d) from Server, error:%v", el.idx, ctx.Err())
// logging.Debugf("stopping ticker in event-loop(%d) from Server, error:%v", el.idx, ctx.Err())
return
case <-timer.C:
}
Expand Down
4 changes: 2 additions & 2 deletions eventloop_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ func (el *eventloop) loopTicker(ctx context.Context) {
delay, action = el.eventHandler.Tick()
if action == Shutdown {
el.ch <- func() error { return errors.ErrServerShutdown }
logging.Debugf("stopping ticker in event-loop(%d) from Tick()", el.idx)
// logging.Debugf("stopping ticker in event-loop(%d) from Tick()", el.idx)
}
if timer == nil {
timer = time.NewTimer(delay)
Expand All @@ -193,7 +193,7 @@ func (el *eventloop) loopTicker(ctx context.Context) {
}
select {
case <-ctx.Done():
logging.Debugf("stopping ticker in event-loop(%d) from Server, error:%v", el.idx, ctx.Err())
// logging.Debugf("stopping ticker in event-loop(%d) from Server, error:%v", el.idx, ctx.Err())
return
case <-timer.C:
}
Expand Down
2 changes: 1 addition & 1 deletion gnet.go
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ func Serve(eventHandler EventHandler, protoAddr string, opts ...Option) (err err
return
}
if options.Logger != nil {
logging.SetupLogger(options.Logger)
logging.SetupLogger(options.Logger, options.LogLevel)
}
defer logging.Cleanup()

Expand Down
22 changes: 7 additions & 15 deletions internal/logging/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,10 @@
// it's a shortcut for NewProductionConfig().Build(...Option); the latter builds a development Logger
// that writes DebugLevel and above logs to standard error in a human-friendly format,
// it's a shortcut for NewDevelopmentConfig().Build(...Option).
//
// The environment variable `GNET_LOGGING_MODE` determines which zap logger type will be created for logging,
// "prod" (case-insensitive) means production logger while other values except "prod" including "dev" (case-insensitive)
// represent development logger.
package logging

import (
"errors"
"sync"

"go.uber.org/zap"
"go.uber.org/zap/zapcore"
Expand All @@ -50,19 +45,15 @@ var (
DefaultLogger Logger
zapLogger *zap.Logger
loggingLevel zapcore.Level

once sync.Once
)

// Init initializes the inside default logger of client.
func Init(logLevel zapcore.Level) {
once.Do(func() {
cfg := zap.NewDevelopmentConfig()
loggingLevel = logLevel
cfg.Level = zap.NewAtomicLevelAt(logLevel)
zapLogger, _ = cfg.Build()
DefaultLogger = zapLogger.Sugar()
})
cfg := zap.NewDevelopmentConfig()
loggingLevel = logLevel
cfg.Level = zap.NewAtomicLevelAt(logLevel)
zapLogger, _ = cfg.Build()
DefaultLogger = zapLogger.Sugar()
}

func getEncoder() zapcore.Encoder {
Expand Down Expand Up @@ -99,10 +90,11 @@ func SetupLoggerWithPath(localPath string, logLevel zapcore.Level) (err error) {
}

// SetupLogger setups the logger by the Logger interface.
func SetupLogger(logger Logger) {
func SetupLogger(logger Logger, logLevel zapcore.Level) {
if logger == nil {
return
}
loggingLevel = logLevel
zapLogger = nil
DefaultLogger = logger
}
Expand Down

0 comments on commit 8aeb278

Please sign in to comment.