Этот проект scarylog - это Go-модуль, предназначенный для предоставления удобной обертки вокруг структурированного логгера Go, slog. Основная цель - упростить операции логгирования и обеспечить единообразную практику логгирования в приложениях.
Доступные языки: English
Для установки пакета выполните:
go get github.com/scarymovie/scarylog/v2- Уровневые методы
Info/Warn/Debug/Errorи их контекстные вариантыInfoContext/WarnContext/DebugContext/ErrorContext, прокидывающиеctxв обработчик (для context-aware хендлеров, например trace-корреляции). - Автоматический захват caller и стек-трейса на ошибках.
ErrorMsg— когда нужно стабильное низкокардинальное сообщение, а текст ошибки в атрибутеerror. - Группировка, перезапись и чтение атрибутов, проброс логгера через
context.Context. SetDefault— логгер приложения как фолбэк дляFromContext, чтобы записи вне request-scope не терялиservice/version/environment.- HTTP middleware в подпакете
scaryhttp— авто-X-Request-ID(и любое число дополнительных correlation id), request-scoped логгер в контексте и лог жизненного цикла запроса, в том числе при панике. Только stdlib. WebSocket-апгрейды и стриминг не ломаются: writer, который получает хендлер, реализует ровно те же интерфейсы, что и оригинальный.
Логгер приложения ставится один раз при старте:
base := scarylog.NewLogger(
scarylog.WithDefaultAttrs("service", "my-service", "version", version),
)
scarylog.SetDefault(base)Подробное руководство по использованию — в SKILL.md.