Что такое Slog

«Что такое Slog» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Slog — это новый пакет для структурированного логирования, добавленный в Go 1.21. Он заменяет старый log и предлагает более гибкий и производительный подход.

Ключевые особенности:

  • Поддержка уровней логирования (Debug, Info, Warn, Error)
  • Структурированный вывод (JSON, текстовый формат)
  • Группировка атрибутов
  • Высокая производительность

Пример использования:

import "log/slog"

func main() {
    logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
    logger.Info("user logged in",
        "user_id", 123,
        "ip", "192.168.1.1",
    )
}

Вывод:

{
  "time": "2023-10-01T12:00:00Z",
  "level": "INFO",
  "msg": "user logged in",
  "user_id": 123,
  "ip": "192.168.1.1"
}

Slog интегрируется с контекстом и поддерживает кастомные обработчики.