В 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 оправданы на действительно горячих путях.