package logger import ( "bytes" "encoding/json" "log/slog" "strings" "testing" ) func TestLogFmt(t *testing.T) { var buf bytes.Buffer jsonh := slog.NewJSONHandler(&buf, nil) h := newLogFmtHandler(jsonh) log := slog.New(h) log.Info("test message", "id", 1010) t.Logf("buf: %s", buf.String()) msg := map[string]any{} err := json.Unmarshal(buf.Bytes(), &msg) if err != nil { t.Logf("couldn't unmarshal json log: %s", err) t.Fail() } if msgTxt, ok := msg["msg"].(string); ok { if !strings.Contains(msgTxt, "id=1010") { t.Log("didn't find id in msg value") t.Fail() } if strings.Contains(msgTxt, "level=") { t.Log("msg value contains level=") t.Fail() } } else { t.Log("didn't find message in output") t.Fail() } }