From fa9261a8194ececa763edd7b882beafb112e120a Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Mon, 28 Aug 2023 17:19:57 +0300 Subject: [PATCH] =?utf8?q?=D0=A1=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83=D1=80?= =?utf8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD=D0=BE=D0=B5=20=D0=BB?= =?utf8?q?=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?utf8?q?=D0=B2=20Go?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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-ов, где и многострочные можно засовывать и читается это легко человеку и даже готовые утилиты для работы есть. -- 2.48.1