@@ -2,6 +2,7 @@ package log
22
33import (
44 "fmt"
5+ "sync"
56
67 "github.com/no-src/log/content"
78 "github.com/no-src/log/formatter"
@@ -16,6 +17,7 @@ type baseLogger struct {
1617 f formatter.Formatter
1718 appendTime bool
1819 timeFormat string
20+ optMu sync.RWMutex // protect Option
1921}
2022
2123func (l * baseLogger ) Debug (format string , args ... interface {}) {
@@ -49,7 +51,11 @@ func (l *baseLogger) log(lvl level.Level, format string, args ...interface{}) {
4951
5052func (l * baseLogger ) logWithErr (err error , lvl level.Level , format string , args ... interface {}) {
5153 if checkLogLevel (l .lvl , lvl ) {
52- data , _ := l .f .Serialize (content .NewContent (lvl , err , l .appendTime , l .timeFormat , format , args ... ))
54+ l .optMu .RLock ()
55+ c := content .NewContent (lvl , err , l .appendTime , l .timeFormat , format , args ... )
56+ f := l .f
57+ l .optMu .RUnlock ()
58+ data , _ := f .Serialize (c )
5359 l .Log (string (data ))
5460 }
5561}
@@ -72,15 +78,19 @@ func (l *baseLogger) init(w Writer, lvl level.Level, appendTime bool) {
7278
7379func (l * baseLogger ) setFormatter (f formatter.Formatter ) {
7480 if f != nil {
81+ l .optMu .Lock ()
7582 l .f = f
83+ l .optMu .Unlock ()
7684 }
7785}
7886
7987func (l * baseLogger ) setTimeFormat (f string ) {
8088 if len (f ) == 0 {
8189 f = content .DefaultLogTimeFormat ()
8290 }
91+ l .optMu .Lock ()
8392 l .timeFormat = f
93+ l .optMu .Unlock ()
8494}
8595
8696func checkLogLevel (lvl level.Level , currentLevel level.Level ) bool {
0 commit comments