slogvalues.go 793 B

12345678910111213141516171819202122232425262728293031323334353637383940
  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. "log/slog"
  9. "maps"
  10. "slices"
  11. )
  12. func Address(v any) slog.Attr {
  13. return slog.Any("address", v)
  14. }
  15. func Error(err any) slog.Attr {
  16. if err == nil {
  17. return slog.Attr{}
  18. }
  19. return slog.Any("error", err)
  20. }
  21. func FilePath(path string) slog.Attr {
  22. return slog.String("path", path)
  23. }
  24. func URI(v any) slog.Attr {
  25. return slog.Any("uri", v)
  26. }
  27. func Map[T any](m map[string]T) []any {
  28. var attrs []any
  29. for _, key := range slices.Sorted(maps.Keys(m)) {
  30. attrs = append(attrs, slog.Any(key, m[key]))
  31. }
  32. return attrs
  33. }