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  }