github.com/renbou/grpcbridge@v0.0.2-0.20240416012907-bcbd8b12648a/internal/bridgetest/logger.go (about) 1 package bridgetest 2 3 import ( 4 "fmt" 5 "strings" 6 "testing" 7 8 "github.com/renbou/grpcbridge/bridgelog" 9 ) 10 11 func Logger(t *testing.T) bridgelog.Logger { 12 return bridgelog.WrapPlainLogger(&testLogger{t}) 13 } 14 15 type testLogger struct { 16 t *testing.T 17 } 18 19 func (l *testLogger) Debug(msg string, args ...any) { 20 l.t.Logf("[DEBUG] %s: %s", msg, l.fmt(args...)) 21 } 22 23 func (l *testLogger) Info(msg string, args ...any) { 24 l.t.Logf("[INFO] %s: %s", msg, l.fmt(args...)) 25 } 26 27 func (l *testLogger) Warn(msg string, args ...any) { 28 l.t.Logf("[WARN] %s: %s", msg, l.fmt(args...)) 29 } 30 31 func (l *testLogger) Error(msg string, args ...any) { 32 l.t.Logf("[ERROR] %s: %s", msg, l.fmt(args...)) 33 } 34 35 func (l *testLogger) fmt(args ...any) string { 36 var b strings.Builder 37 38 for i := 0; i < len(args); { 39 if i+1 < len(args) { 40 b.WriteString(fmt.Sprint(args[i])) 41 b.WriteString("=") 42 b.WriteString(fmt.Sprint(args[i+1])) 43 i += 2 44 } else { 45 b.WriteString(fmt.Sprint(args[i])) 46 i++ 47 } 48 49 b.WriteString(", ") 50 } 51 52 return b.String() 53 }