Вдохновившись механизмом trace.FlightRecorder, появившимся в Go 1.25, автор решил применить ту же концепцию "черного ящика" к логам: хранить последние N записей в кольцевом буфере без аллокаций на горячем пути, снэпшот по требованию и асинхронный сброс при ошибках или при завершении работы.
В статье автор рассказывает о создании slogbox — собственного slog.Handler для Go, реализующего кольцевой буфер фиксированного размера для хранения структурированных логов в памяти.
В статье подробно разбираются ключевые проектные решения: почему в буфере хранятся сырые slog.Record, а не отформатированные строки, как работает нетривиальное разрешение значений LogValuer на момент записи, почему используется sync.RWMutex вместо каналов для минимизации задержек.
Итоговая библиотека предлагает простой, эффективный и гибкий способ добавить отладку через HTTP-эндпоинт или получать контекст вокруг ошибок без постоянного логирования в продакшене.
17.04.2026
Похожее
16.07.2026
mmap или pread
Автор статьи - инженер из VictoriaMetrics. На примере реального движка хранения ...
16.07.2026
TypeScript переписали на Go
Команда Microsoft с помощью AI переписала компилятор TypeScript 7.0 на Go, а не ...
14.07.2026
На 49% быстрее из-за выравнивания
Разбор неожиданной оптимизации в Go: сдвиг массива на 4 байта через добавление p...
13.07.2026
Активация сокетов
Автор рассказывает, как с помощью сокет-активации systemd запускать Go-сервис то...