gotosocial/vendor/codeberg.org/gruf/go-kv/v2
kim 7af9117e0d [feature + performance] add JSON logging format (#4355)
# Description

Adds JSON logging as an optional alternative log output format. In the process this moves our log formatting itself into a separate subpkg to make it more easily modular, and improves caller name getting with some calling function name caching.

## Checklist

- [x] I/we have read the [GoToSocial contribution guidelines](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/CONTRIBUTING.md).
- [x] I/we have discussed the proposed changes already, either in an issue on the repository, or in the Matrix chat.
- [x] I/we have not leveraged AI to create the proposed changes.
- [x] I/we have performed a self-review of added code.
- [x] I/we have written code that is legible and maintainable by others.
- [x] I/we have commented the added code, particularly in hard-to-understand areas.
- [x] I/we have made any necessary changes to documentation.
- [ ] I/we have added tests that cover new code.
- [x] I/we have run tests and they pass locally with the changes.
- [x] I/we have run `go fmt ./...` and `golangci-lint run`.

Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4355
Co-authored-by: kim <grufwub@gmail.com>
Co-committed-by: kim <grufwub@gmail.com>
2025-08-09 16:23:00 +02:00
..
format [feature + performance] add JSON logging format (#4355) 2025-08-09 16:23:00 +02:00
field.go [performance] bump codeberg.org/gruf/go-kv to v2 (#4341) 2025-07-29 09:23:20 +02:00
field_fmt.go [performance] bump codeberg.org/gruf/go-kv to v2 (#4341) 2025-07-29 09:23:20 +02:00
field_format.go [feature + performance] add JSON logging format (#4355) 2025-08-09 16:23:00 +02:00
LICENSE [performance] bump codeberg.org/gruf/go-kv to v2 (#4341) 2025-07-29 09:23:20 +02:00
README.md [performance] bump codeberg.org/gruf/go-kv to v2 (#4341) 2025-07-29 09:23:20 +02:00
util.go [feature + performance] add JSON logging format (#4355) 2025-08-09 16:23:00 +02:00

go-kv

This library provides a key-value field structure kv.Field{} that plays well with the "fmt" package. It gives an easy means of appending key-value fields to log entries, in a more performant manner that also happens to look nice! (it's not far removed from using a map[string]interface{}).

The formatting for these key-value fields is handled by the "fmt" package by default. If you set the kvformat build tag then it will use a custom formatting library found under format/.