formatting_test.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // Copyright (C) 2025 The Syncthing Authors.
  2. //
  3. // This Source Code Form is subject to the terms of the Mozilla Public
  4. // License, v. 2.0. If a copy of the MPL was not distributed with this file,
  5. // You can obtain one at https://mozilla.org/MPL/2.0/.
  6. package slogutil
  7. import (
  8. "bytes"
  9. "log/slog"
  10. "strings"
  11. "testing"
  12. "time"
  13. )
  14. func TestFormattingHandler(t *testing.T) {
  15. buf := new(bytes.Buffer)
  16. h := &formattingHandler{
  17. out: buf,
  18. timeOverride: time.Unix(1234567890, 0).In(time.UTC),
  19. }
  20. l := slog.New(h).With("a", "a")
  21. l.Info("A basic info line", "attr1", "val with spaces", "attr2", 2, "attr3", `val"quote`)
  22. l.Info("A basic info line", "attr1", "paren)thesis")
  23. l.Info("An info line with grouped values", "attr1", "val1", slog.Group("foo", "attr2", 2, slog.Group("bar", "attr3", "3")))
  24. l2 := l.WithGroup("foo")
  25. l2.Info("An info line with grouped values via logger", "attr1", "val1", "attr2", 2)
  26. l3 := l2.WithGroup("bar")
  27. l3.Info("An info line with nested grouped values via logger", "attr1", "val1", "attr2", 2)
  28. l3.Debug("A debug entry")
  29. l3.Warn("A warning entry")
  30. l3.Error("An error")
  31. exp := `
  32. 2009-02-13 23:31:30 INF A basic info line (attr1="val with spaces" attr2=2 attr3="val\"quote" a=a log.pkg=slogutil)
  33. 2009-02-13 23:31:30 INF A basic info line (attr1="paren)thesis" a=a log.pkg=slogutil)
  34. 2009-02-13 23:31:30 INF An info line with grouped values (attr1=val1 foo.attr2=2 foo.bar.attr3=3 a=a log.pkg=slogutil)
  35. 2009-02-13 23:31:30 INF An info line with grouped values via logger (foo.attr1=val1 foo.attr2=2 a=a log.pkg=slogutil)
  36. 2009-02-13 23:31:30 INF An info line with nested grouped values via logger (bar.foo.attr1=val1 bar.foo.attr2=2 a=a log.pkg=slogutil)
  37. 2009-02-13 23:31:30 WRN A warning entry (a=a log.pkg=slogutil)
  38. 2009-02-13 23:31:30 ERR An error (a=a log.pkg=slogutil)`
  39. if strings.TrimSpace(buf.String()) != strings.TrimSpace(exp) {
  40. t.Log(buf.String())
  41. t.Log(exp)
  42. t.Error("mismatch")
  43. }
  44. }