Вдохновившись механизмом trace.FlightRecorder, появившимся в Go 1.25, автор решил применить ту же концепцию "черного ящика" к логам: хранить последние N записей в кольцевом буфере без аллокаций на горячем пути, снэпшот по требованию и асинхронный сброс при ошибках или при завершении работы.
В статье автор рассказывает о создании slogbox — собственного slog.Handler для Go, реализующего кольцевой буфер фиксированного размера для хранения структурированных логов в памяти.
В статье подробно разбираются ключевые проектные решения: почему в буфере хранятся сырые slog.Record, а не отформатированные строки, как работает нетривиальное разрешение значений LogValuer на момент записи, почему используется sync.RWMutex вместо каналов для минимизации задержек.
Итоговая библиотека предлагает простой, эффективный и гибкий способ добавить отладку через HTTP-эндпоинт или получать контекст вокруг ошибок без постоянного логирования в продакшене.
17.04.2026
Похожее
01.06.2026
Руководство по миграции с Go на Rust
Подробное руководство по миграции с Go на Rust для бэкенд-сервисов. Автор об...
29.05.2026
Что нового в Go
Go - "скучный" в самом хорошем смысле этого слова: стабильный, надежный и создан...
28.05.2026
Дженерик методы
Ура! В Go теперь можно будет объявлять параметризованные методы для типов, ко...
28.05.2026
Рейт лимитинг
Автор разбирает три основных алгоритма рейт лимитинга в Go: Token Bucket в библи...