From 2eaa57b91cc47400f4057e155c44285d2770a475 Mon Sep 17 00:00:00 2001 From: akeemphilbert Date: Sat, 16 Mar 2024 12:33:49 -0400 Subject: [PATCH 1/2] feature: WS-512 Add support for tagged logs by extracting fields from arguments --- log/zap.go | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/log/zap.go b/log/zap.go index 67f69912..1d4df2ec 100644 --- a/log/zap.go +++ b/log/zap.go @@ -55,12 +55,69 @@ func (z *Zap) WithRequestID(prefix string, level string, requestID string) (*Zap return z, err } +func (z *Zap) extractTags(args ...interface{}) (fields []interface{}, arguments []interface{}) { + //check to see which ones are zap fields + for _, arg := range args { + switch arg.(type) { + case zapcore.Field: + fields = append(fields, arg) + default: + arguments = append(arguments, arg) + } + } + return fields, arguments +} + func (z *Zap) Printf(format string, args ...interface{}) { - z.Infof(format, args...) + fields, arguments := z.extractTags(args...) + if len(fields) > 0 { + z.With(fields...) + } + z.Infof(format, arguments...) } func (z *Zap) Print(args ...interface{}) { - z.Info(args...) + fields, _ := z.extractTags(args...) + z.Info(fields...) +} + +func (z *Zap) Errorf(format string, args ...interface{}) { + fields, arguments := z.extractTags(args...) + if len(fields) > 0 { + z.SugaredLogger.With(fields...) + } + z.SugaredLogger.Errorf(format, arguments...) +} + +func (z *Zap) Error(args ...interface{}) { + fields, _ := z.extractTags(args...) + z.SugaredLogger.Error(fields...) +} + +func (z *Zap) Warnf(format string, args ...interface{}) { + fields, arguments := z.extractTags(args...) + if len(fields) > 0 { + z.SugaredLogger.With(fields...) + } + z.SugaredLogger.Warnf(format, arguments...) +} + +func (z *Zap) Warn(args ...interface{}) { + fields, _ := z.extractTags(args...) + z.SugaredLogger.Error(fields...) +} + +func (z *Zap) Debugf(format string, args ...interface{}) { + fields, arguments := z.extractTags(args...) + if len(fields) > 0 { + z.SugaredLogger.With(fields...) + } + z.SugaredLogger.Debugf(format, arguments...) +} + +func (z *Zap) Debug(args ...interface{}) { + fields, _ := z.extractTags(args...) + z.SugaredLogger.Error(fields...) } func (z *Zap) Output() io.Writer { @@ -147,4 +204,3 @@ func (z *Zap) Fatalj(j log.JSON) { func (z *Zap) Panicj(j log.JSON) { z.Panic(j) } - From bd2b8971247da550fe5abb90b6012ef1cd7590fb Mon Sep 17 00:00:00 2001 From: akeemphilbert Date: Sat, 16 Mar 2024 12:45:06 -0400 Subject: [PATCH 2/2] feature: WS-512 Add support for tagged logs by extracting fields from arguments --- log/zap.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/log/zap.go b/log/zap.go index 1d4df2ec..d76f9ecd 100644 --- a/log/zap.go +++ b/log/zap.go @@ -90,8 +90,11 @@ func (z *Zap) Errorf(format string, args ...interface{}) { } func (z *Zap) Error(args ...interface{}) { - fields, _ := z.extractTags(args...) - z.SugaredLogger.Error(fields...) + fields, arguments := z.extractTags(args...) + if len(fields) > 0 { + z.SugaredLogger.With(fields...) + } + z.SugaredLogger.Error(arguments...) } func (z *Zap) Warnf(format string, args ...interface{}) { @@ -103,8 +106,11 @@ func (z *Zap) Warnf(format string, args ...interface{}) { } func (z *Zap) Warn(args ...interface{}) { - fields, _ := z.extractTags(args...) - z.SugaredLogger.Error(fields...) + fields, arguments := z.extractTags(args...) + if len(fields) > 0 { + z.SugaredLogger.With(fields...) + } + z.SugaredLogger.Warn(arguments...) } func (z *Zap) Debugf(format string, args ...interface{}) { @@ -116,8 +122,11 @@ func (z *Zap) Debugf(format string, args ...interface{}) { } func (z *Zap) Debug(args ...interface{}) { - fields, _ := z.extractTags(args...) - z.SugaredLogger.Error(fields...) + fields, arguments := z.extractTags(args...) + if len(fields) > 0 { + z.SugaredLogger.With(fields...) + } + z.SugaredLogger.Debug(arguments...) } func (z *Zap) Output() io.Writer {