Как логировать в Go — slog vs zerolog vs zap?

Middle
1.4k просмотров
AFK Offer AI

В Go три основных логгера: slog (стандартная библиотека), zap (Uber) и zerolog (нулевые аллокации).

slog (Go 1.21+) — встроенный, достаточно быстрый, структурированный. Выбирай по умолчанию, если нет особых требований. zerolog — самый быстрый, zero-allocation, JSON only. Идеален для высоконагруженных сервисов. zap — золотая середина, гибкий, популярный в Uber-экосистеме.

// slog
slog.Info("request", "method", "GET", "path", "/api")

// zerolog log.Info().Str("method", "GET").Str("path", "/api").Msg("request")

// zap logger.Info("request", zap.String("method", "GET"), zap.String("path", "/api"))

На практике разница в перформансе между ними заметна только при >100к логов/сек. Для большинства проектов slog — идеальный выбор: ноль зависимостей, хорошая производительность, стандарт языка. zerolog/zap оправданы на действительно горячих путях.

Следующий вопрос

Чем REST отличается от gRPC?