Вдохновившись механизмом trace.FlightRecorder, появившимся в Go 1.25, автор решил применить ту же концепцию "черного ящика" к логам: хранить последние N записей в кольцевом буфере без аллокаций на горячем пути, снэпшот по требованию и асинхронный сброс при ошибках или при завершении работы.
В статье автор рассказывает о создании slogbox — собственного slog.Handler для Go, реализующего кольцевой буфер фиксированного размера для хранения структурированных логов в памяти.
В статье подробно разбираются ключевые проектные решения: почему в буфере хранятся сырые slog.Record, а не отформатированные строки, как работает нетривиальное разрешение значений LogValuer на момент записи, почему используется sync.RWMutex вместо каналов для минимизации задержек.
Итоговая библиотека предлагает простой, эффективный и гибкий способ добавить отладку через HTTP-эндпоинт или получать контекст вокруг ошибок без постоянного логирования в продакшене.
17.04.2026
Похожее
15.05.2026
Слайсы, мапы и каналы
Продолжается цикл статей про внутреннее устройство Go. Эта статья разбирает внут...
14.05.2026
JIT для go
В статье про JIT-компилятор для Go версии 1.17+, форк проекта nelhage/gojit. ...
13.05.2026
PGKeeper
PGKeeper - это сервис на Go, который команда Figma разработала для замены устаре...
12.05.2026
CPU нагрузка
В статье рассматриваются проблемы оптимизации кода на Go, который нагружает CPU...