Skip to content

Commit 901d6db

Browse files
authored
fix: data race with multiple goroutine (#13)
* fix: data race when using klog * remove test
1 parent 72bb05e commit 901d6db

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

klog/klog.go

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package klog
22

33
import (
44
"context"
5+
"sync"
56

67
"github.com/KyberNetwork/logger"
78
)
@@ -12,7 +13,10 @@ func DefaultLogger() Logger {
1213

1314
type Logger = logger.Logger
1415

15-
var log Logger
16+
var (
17+
log Logger
18+
once sync.Once
19+
)
1620

1721
type Configuration struct {
1822
EnableConsole bool
@@ -35,22 +39,26 @@ const (
3539

3640
func InitLogger(config Configuration, backend LoggerBackend) (Logger, error) {
3741
var err error
38-
log, err = logger.InitLogger(logger.Configuration{
39-
EnableConsole: config.EnableConsole,
40-
EnableJSONFormat: config.EnableJSONFormat,
41-
ConsoleLevel: config.ConsoleLevel,
42-
EnableFile: config.EnableFile,
43-
FileJSONFormat: config.FileJSONFormat,
44-
FileLevel: config.FileLevel,
45-
FileLocation: config.FileLocation,
46-
}, backend)
42+
once.Do(func() {
43+
log, err = logger.InitLogger(logger.Configuration{
44+
EnableConsole: config.EnableConsole,
45+
EnableJSONFormat: config.EnableJSONFormat,
46+
ConsoleLevel: config.ConsoleLevel,
47+
EnableFile: config.EnableFile,
48+
FileJSONFormat: config.FileJSONFormat,
49+
FileLevel: config.FileLevel,
50+
FileLocation: config.FileLocation,
51+
}, backend)
52+
})
4753
return log, err
4854
}
4955

5056
func Log() Logger {
51-
if log == nil {
52-
log = DefaultLogger()
53-
}
57+
once.Do(func() {
58+
if log == nil {
59+
log = DefaultLogger()
60+
}
61+
})
5462
return log
5563
}
5664

0 commit comments

Comments
 (0)