Post Thumbnail

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

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

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

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

Похожее

Post Thumbnail

JIT для go

В статье про JIT-компилятор для Go версии 1.17+, форк проекта nelhage/gojit. ...

Post Thumbnail

PGKeeper

PGKeeper - это сервис на Go, который команда Figma разработала для замены устаре...

Post Thumbnail

CPU нагрузка

В статье рассматриваются проблемы оптимизации кода на Go, который нагружает CPU...