File tree Expand file tree Collapse file tree 1 file changed +22
-5
lines changed Expand file tree Collapse file tree 1 file changed +22
-5
lines changed Original file line number Diff line number Diff line change 8
8
"reflect"
9
9
"runtime"
10
10
"strings"
11
+ "sync/atomic"
12
+ "time"
11
13
)
12
14
13
15
type LogType string
@@ -21,29 +23,44 @@ const (
21
23
var (
22
24
accessLog * Logger //nolint:golint,gochecknoglobals
23
25
errorLog * Logger //nolint:golint,gochecknoglobals
26
+ isInit atomic.Bool
27
+ loaded atomic.Bool
24
28
)
25
29
26
- func GetLogger (logType LogType ) * Logger {
30
+ func getLogger (logType LogType ) * Logger {
27
31
switch logType {
28
32
case Access :
29
33
if accessLog != nil {
30
34
return accessLog
31
35
}
32
36
// Create access logger
33
- accessLog = createLogger (logType )
34
- return accessLog
37
+ return createLogger (logType )
35
38
case Error :
36
39
if errorLog != nil {
37
40
return errorLog
38
41
}
39
42
// Create error logger
40
- errorLog = createLogger (logType )
41
- return errorLog
43
+ return createLogger (logType )
42
44
default :
43
45
panic ("Logging failed" )
44
46
}
45
47
}
46
48
49
+ func GetLogger (logType LogType ) * Logger {
50
+ lastInit := isInit .Swap (true )
51
+ if ! lastInit {
52
+ logger := getLogger (logType )
53
+ loaded .Store (true )
54
+ return logger
55
+ }
56
+ for ! loaded .Load () {
57
+ const loadDelay = 100 * time .Nanosecond
58
+ time .Sleep (loadDelay )
59
+ }
60
+
61
+ return getLogger (logType )
62
+ }
63
+
47
64
func createLogger (logType LogType ) * Logger {
48
65
var logFile * os.File
49
66
switch runtime .GOOS {
You can’t perform that action at this time.
0 commit comments