Skip to content

Commit d3d059c

Browse files
committed
ensure log messages from more than one thread do not get printed at the same time
1 parent 1a06ae8 commit d3d059c

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

blackbox.go

+8-1
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ package blackbox
33
import (
44
"fmt"
55
"os"
6+
"sync"
67
)
78

89
// Logger will take log messages and write them to the targets provided
910
type Logger struct {
1011
level Level
1112
targetSet *targetSet
1213
context Ctx
14+
lock *sync.Mutex
1315
}
1416

1517
// New creates a new blackbox logger
@@ -18,6 +20,7 @@ func New() *Logger {
1820
level: Trace,
1921
targetSet: &targetSet{},
2022
context: make(Ctx, 0),
23+
lock: &sync.Mutex{},
2124
}
2225
}
2326

@@ -33,7 +36,11 @@ func (l *Logger) Log(level Level, values ...interface{}) *Logger {
3336
if level < l.level {
3437
return l
3538
}
36-
l.targetSet.log(level, values, l.context)
39+
go func() {
40+
l.lock.Lock()
41+
l.targetSet.log(level, values, l.context)
42+
l.lock.Unlock()
43+
}()
3744
return l
3845
}
3946

0 commit comments

Comments
 (0)