Skip to content

Commit 41215b3

Browse files
vishrVishal Rana
authored andcommitted
Fixed locking
Signed-off-by: Vishal Rana <[email protected]>
1 parent e76cead commit 41215b3

File tree

2 files changed

+24
-21
lines changed

2 files changed

+24
-21
lines changed

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,25 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
33
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
44
github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
55
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
6+
github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU=
67
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
78
github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs=
89
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
10+
github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE=
911
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
1012
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
1113
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
1214
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
1315
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
1416
github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
1517
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
18+
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
1619
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
1720
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
1821
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
1922
github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4 h1:gKMu1Bf6QINDnvyZuTaACm9ofY+PRh+5vFz4oxBZeF8=
2023
github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4/go.mod h1:50wTf68f99/Zt14pr046Tgt3Lp2vLyFZKzbFXTOabXw=
24+
github.com/valyala/fasttemplate v1.0.1 h1:tY9CJiPnMXf1ERmG2EyK7gNUd+c6RKGD0IfU8WdUSz8=
2125
github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
2226
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
2327
golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2 h1:T5DasATyLQfmbTpfEXx/IOL9vfjzW6up+ZDkmHvIf2s=

log/log.go

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"runtime"
1111
"strconv"
1212
"sync"
13+
"sync/atomic"
1314
"time"
1415

1516
"github.com/mattn/go-isatty"
@@ -21,7 +22,7 @@ import (
2122
type (
2223
Logger struct {
2324
prefix string
24-
level Lvl
25+
level uint32
2526
skip int
2627
output io.Writer
2728
template *fasttemplate.Template
@@ -31,13 +32,11 @@ type (
3132
mutex sync.Mutex
3233
}
3334

34-
Lvl uint8
35-
3635
JSON map[string]interface{}
3736
)
3837

3938
const (
40-
DEBUG Lvl = iota + 1
39+
DEBUG uint32 = iota + 1
4140
INFO
4241
WARN
4342
ERROR
@@ -109,12 +108,12 @@ func (l *Logger) SetPrefix(p string) {
109108
l.prefix = p
110109
}
111110

112-
func (l *Logger) Level() Lvl {
113-
return l.level
111+
func (l *Logger) Level() uint32 {
112+
return atomic.LoadUint32(&l.level)
114113
}
115114

116-
func (l *Logger) SetLevel(v Lvl) {
117-
l.level = v
115+
func (l *Logger) SetLevel(level uint32) {
116+
atomic.StoreUint32(&l.level, level)
118117
}
119118

120119
func (l *Logger) Output() io.Writer {
@@ -243,12 +242,12 @@ func SetPrefix(p string) {
243242
global.SetPrefix(p)
244243
}
245244

246-
func Level() Lvl {
245+
func Level() uint32 {
247246
return global.Level()
248247
}
249248

250-
func SetLevel(v Lvl) {
251-
global.SetLevel(v)
249+
func SetLevel(level uint32) {
250+
global.SetLevel(level)
252251
}
253252

254253
func Output() io.Writer {
@@ -347,16 +346,14 @@ func Panicj(j JSON) {
347346
global.Panicj(j)
348347
}
349348

350-
func (l *Logger) log(v Lvl, format string, args ...interface{}) {
351-
l.mutex.Lock()
352-
defer l.mutex.Unlock()
353-
buf := l.bufferPool.Get().(*bytes.Buffer)
354-
buf.Reset()
355-
defer l.bufferPool.Put(buf)
356-
_, file, line, _ := runtime.Caller(l.skip)
357-
358-
if v >= l.level || v == 0 {
349+
func (l *Logger) log(level uint32, format string, args ...interface{}) {
350+
if level >= l.level || level == 0 {
351+
buf := l.bufferPool.Get().(*bytes.Buffer)
352+
buf.Reset()
353+
defer l.bufferPool.Put(buf)
354+
_, file, line, _ := runtime.Caller(l.skip)
359355
message := ""
356+
360357
if format == "" {
361358
message = fmt.Sprint(args...)
362359
} else if format == "json" {
@@ -376,7 +373,7 @@ func (l *Logger) log(v Lvl, format string, args ...interface{}) {
376373
case "time_rfc3339_nano":
377374
return w.Write([]byte(time.Now().Format(time.RFC3339Nano)))
378375
case "level":
379-
return w.Write([]byte(l.levels[v]))
376+
return w.Write([]byte(l.levels[level]))
380377
case "prefix":
381378
return w.Write([]byte(l.prefix))
382379
case "long_file":
@@ -409,6 +406,8 @@ func (l *Logger) log(v Lvl, format string, args ...interface{}) {
409406
buf.WriteString(message)
410407
}
411408
buf.WriteByte('\n')
409+
l.mutex.Lock()
410+
defer l.mutex.Unlock()
412411
l.output.Write(buf.Bytes())
413412
}
414413
}

0 commit comments

Comments
 (0)