From: Sergey Matveev Date: Mon, 28 Aug 2023 14:19:57 +0000 (+0300) Subject: Структурированное логирование в Go X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=fa9261a8194ececa763edd7b882beafb112e120a;p=stargrave-blog.git Структурированное логирование в Go https://go.dev/blog/slog https://pkg.go.dev/log/slog https://github.com/golang/example/blob/master/slog-handler-guide/README.md Про slog я давно уже слышал что наконец-то что-то более навороченное чем родной log добавят в новую версию Go. Но не вчитывался даже в документацию, поэтому и не обратил внимание на возможность объединять key-value значения в группы. Мне казалось этого нет, поэтому заменой логирования который умеет делать RFC 5424 структурированные записи. Сегодня уже вплотную начал рассматривать slog. Группы есть -- а значит RFC 5424 задачи может покрыть. С первого раза и первого компилирования написал slog.Handler который бы сохранял записи в recfile формате. Очень удобно и просто работать со всем что даёт slog. И разные уровни, и key-value и просто сообщения, и With/WithAttrs, и WithGroup -- всё тривиально но удобно. Заморочены на производительности -- приятно. И явно типизированные данные в качестве value можно логировать, что здорово. В двух проектах мою самопальную систему структурированного логирования можно полностью заменять на slog. Я не поклонник RFC 5424 сейчас, но его внедрял и в ivi и на следующей работе. Сам формат сейчас перестал нравится тем, что многострочные данные уже не засунуть, типа traceback-ов, если только не изобретать дополнительный формат или экранирование. Мне нравится идея записей из recfile-ов, где и многострочные можно засовывать и читается это легко человеку и даже готовые утилиты для работы есть. ---