updates #207
| @@ -106,7 +106,9 @@ func WithAddFields(fields ...interface{}) Option { | |||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
|  | 			if len(fields) > 0 { | ||||||
| 				o.Fields = append(o.Fields, fields...) | 				o.Fields = append(o.Fields, fields...) | ||||||
|  | 			} | ||||||
| 		} else { | 		} else { | ||||||
| 			o.Fields = append(o.Fields, fields...) | 			o.Fields = append(o.Fields, fields...) | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -142,6 +142,7 @@ func (s *slogLogger) Fields(fields ...interface{}) logger.Logger { | |||||||
| 	s.mu.RUnlock() | 	s.mu.RUnlock() | ||||||
|  |  | ||||||
| 	l := &slogLogger{opts: options} | 	l := &slogLogger{opts: options} | ||||||
|  | 	logger.WithAddFields(fields...)(&l.opts) | ||||||
|  |  | ||||||
| 	if len(options.ContextAttrFuncs) == 0 { | 	if len(options.ContextAttrFuncs) == 0 { | ||||||
| 		options.ContextAttrFuncs = logger.DefaultContextAttrFuncs | 		options.ContextAttrFuncs = logger.DefaultContextAttrFuncs | ||||||
|   | |||||||
| @@ -15,7 +15,29 @@ import ( | |||||||
| 	"go.unistack.org/micro/v3/metadata" | 	"go.unistack.org/micro/v3/metadata" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestWithDuplicate(t *testing.T) { | func TestWithFields(t *testing.T) { | ||||||
|  | 	ctx := context.TODO() | ||||||
|  | 	buf := bytes.NewBuffer(nil) | ||||||
|  | 	l := NewLogger(logger.WithLevel(logger.InfoLevel), logger.WithOutput(buf), | ||||||
|  | 		WithHandlerFunc(slog.NewTextHandler), | ||||||
|  | 		logger.WithDedupKeys(true), | ||||||
|  | 	) | ||||||
|  | 	if err := l.Init(logger.WithFields("key1", "val1")); err != nil { | ||||||
|  | 		t.Fatal(err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	l.Info(ctx, "msg1") | ||||||
|  |  | ||||||
|  | 	l = l.Fields("key1", "val2") | ||||||
|  |  | ||||||
|  | 	l.Info(ctx, "msg2") | ||||||
|  |  | ||||||
|  | 	if !bytes.Contains(buf.Bytes(), []byte(`msg=msg2 key1=val1`)) { | ||||||
|  | 		t.Fatalf("logger error not works, buf contains: %s", buf.Bytes()) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func TestWithDedupKeysWithAddFields(t *testing.T) { | ||||||
| 	ctx := context.TODO() | 	ctx := context.TODO() | ||||||
| 	buf := bytes.NewBuffer(nil) | 	buf := bytes.NewBuffer(nil) | ||||||
| 	l := NewLogger(logger.WithLevel(logger.InfoLevel), logger.WithOutput(buf), | 	l := NewLogger(logger.WithLevel(logger.InfoLevel), logger.WithOutput(buf), | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user