Post Thumbnail

Вдохновившись механизмом trace.FlightRecorder, появившимся в Go 1.25, автор решил применить ту же концепцию "черного ящика" к логам: хранить последние N записей в кольцевом буфере без аллокаций на горячем пути, снэпшот по требованию и асинхронный сброс при ошибках или при завершении работы.

В статье автор рассказывает о создании slogbox — собственного slog.Handler для Go, реализующего кольцевой буфер фиксированного размера для хранения структурированных логов в памяти.

В статье подробно разбираются ключевые проектные решения: почему в буфере хранятся сырые slog.Record, а не отформатированные строки, как работает нетривиальное разрешение значений LogValuer на момент записи, почему используется sync.RWMutex вместо каналов для минимизации задержек.

Итоговая библиотека предлагает простой, эффективный и гибкий способ добавить отладку через HTTP-эндпоинт или получать контекст вокруг ошибок без постоянного логирования в продакшене.

Похожее

Post Thumbnail

Шаги

В статье Крис Лесив рассматривает подход к организации многошаговых последовател...