diff --git a/fields.go b/fields.go index 531e0c9..c0f2bdc 100644 --- a/fields.go +++ b/fields.go @@ -1,6 +1,12 @@ package log func (l myLogger) WithFields(fields Fields) Logger { - l.data = fields + if l.data != nil && len(l.data) > 0 { + for k, v := range fields { + l.data[k] = v + } + } else { + l.data = fields + } return l } diff --git a/logger_begin.go b/logger_begin.go index 95f22c1..b9e9c05 100644 --- a/logger_begin.go +++ b/logger_begin.go @@ -6,6 +6,6 @@ func (l myLogger) Begin(s ...interface{}) Logger { if hasLevel(l.level, logFlag) { l.log(logFlag, append([]interface{}{"BEGIN"}, s...)...) } - logger := myLogger{Writer: l.Writer, ErrWriter: l.ErrWriter, prefix: l.prefix, begin: time.Now(), level: l.level} + logger := myLogger{Writer: l.Writer, ErrWriter: l.ErrWriter, prefix: l.prefix, begin: time.Now(), level: l.level, data: l.data} return logger } diff --git a/logger_level.go b/logger_level.go index 4474a13..77a8e28 100644 --- a/logger_level.go +++ b/logger_level.go @@ -20,7 +20,7 @@ const ( // Anything above 6 as level will be considered Level 6. // Pass 0 to output no logs. func (l myLogger) Level(level uint8) Logger { - logger := myLogger{Writer: l.Writer, ErrWriter: l.ErrWriter, prefix: l.prefix, begin: l.begin} + logger := myLogger{Writer: l.Writer, ErrWriter: l.ErrWriter, prefix: l.prefix, begin: l.begin, data: l.data} switch level { case 1: logger.level = alertFlag diff --git a/logger_prefix.go b/logger_prefix.go index e2d0426..e61dcbd 100644 --- a/logger_prefix.go +++ b/logger_prefix.go @@ -11,6 +11,6 @@ func (l myLogger) Prefix(p ...string) Logger { for _, prefix := range p { buffer.WriteString(fmt.Sprintf("%s: ", prefix)) } - logger := myLogger{Writer: l.Writer, ErrWriter: l.ErrWriter, prefix: buffer.String()} + logger := myLogger{Writer: l.Writer, ErrWriter: l.ErrWriter, prefix: buffer.String(), data: l.data} return logger }