Skip to content
6 / 15

Структурированное логирование через slog

log/slog появился в стандартной библиотеке в Go 1.21 и закрыл давнюю потребность: до него каждый проект тянул стороннюю библиотеку. Устроен он из трёх частей. Логгер — то, что вызывает код. Обработчик решает, куда и в каком формате писать: NewJSONHandler для машинного разбора в проде, NewTextHandler для чтения глазами при разработке. Атрибуты — пары ключ-значение, попадающие в запись структурированно, а не склеенные в строку. Практическая ценность именно в третьем: поле user_id в JSON можно фильтровать и агрегировать, а вставленное в текст сообщения — нет. Три вещи стоит делать сразу. Передавать контекст через InfoContext, чтобы идентификатор трассировки попадал в запись автоматически. Заводить дочерний логгер через With для сквозных полей запроса вместо повторения их в каждом вызове. И не логировать персональные данные и секреты — обработчик умеет их вырезать, но проще не класть.

Структурированное логирование через slog | JScriptiser