update slog/logger #351
| @@ -5,7 +5,10 @@ import ( | |||||||
| 	"context" | 	"context" | ||||||
| 	"errors" | 	"errors" | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  | 	"github.com/google/uuid" | ||||||
|  | 	"go.unistack.org/micro/v3/metadata" | ||||||
| 	"log" | 	"log" | ||||||
|  | 	"strings" | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"go.unistack.org/micro/v3/logger" | 	"go.unistack.org/micro/v3/logger" | ||||||
| @@ -192,3 +195,46 @@ func TestLogger(t *testing.T) { | |||||||
| 		t.Fatalf("logger warn, buf %s", buf.Bytes()) | 		t.Fatalf("logger warn, buf %s", buf.Bytes()) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func Test_WithContextAttrFunc(t *testing.T) { | ||||||
|  | 	loggerContextAttrFuncs := []logger.ContextAttrFunc{ | ||||||
|  | 		func(ctx context.Context) []interface{} { | ||||||
|  | 			md, ok := metadata.FromIncomingContext(ctx) | ||||||
|  | 			if !ok { | ||||||
|  | 				return nil | ||||||
|  | 			} | ||||||
|  | 			attrs := make([]interface{}, 0, 10) | ||||||
|  | 			for k, v := range md { | ||||||
|  | 				switch k { | ||||||
|  | 				case "X-Request-Id", "Phone", "External-Id", "Source-Service", "X-App-Install-Id", "Client-Id", "Client-Ip": | ||||||
|  | 					attrs = append(attrs, strings.ToLower(k), v) | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			return attrs | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	logger.DefaultContextAttrFuncs = append(logger.DefaultContextAttrFuncs, loggerContextAttrFuncs...) | ||||||
|  |  | ||||||
|  | 	ctx := context.TODO() | ||||||
|  | 	ctx = metadata.AppendIncomingContext(ctx, "X-Request-Id", uuid.New().String(), | ||||||
|  | 		"Source-Service", "Test-System") | ||||||
|  |  | ||||||
|  | 	buf := bytes.NewBuffer(nil) | ||||||
|  | 	l := NewLogger(logger.WithLevel(logger.TraceLevel), logger.WithOutput(buf)) | ||||||
|  | 	if err := l.Init(); err != nil { | ||||||
|  | 		t.Fatal(err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	l.Info(ctx, "test message") | ||||||
|  | 	if !(bytes.Contains(buf.Bytes(), []byte(`"level":"info"`)) && bytes.Contains(buf.Bytes(), []byte(`"msg":"test message"`))) { | ||||||
|  | 		t.Fatalf("logger info, buf %s", buf.Bytes()) | ||||||
|  | 	} | ||||||
|  | 	if !(bytes.Contains(buf.Bytes(), []byte(`"x-request-id":"`))) { | ||||||
|  | 		t.Fatalf("logger info, buf %s", buf.Bytes()) | ||||||
|  | 	} | ||||||
|  | 	if !(bytes.Contains(buf.Bytes(), []byte(`"source-service":"Test-System"`))) { | ||||||
|  | 		t.Fatalf("logger info, buf %s", buf.Bytes()) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user