Обработчики slog
Обработчики текста и JSON
«Обработчики slog» — бесплатный урок Go Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.
Обработчики определяют формат
В slog Logger вызывает Handler, чтобы форматировать и записывать каждую запись. Замена обработчика меняет формат вывода, не затрагивая вызовы журналирования.
TextHandler
slog.NewTextHandler записывает удобные для человека строки key=value. Это хороший вариант для локальной разработки и терминалов.
package main
import (
"log/slog"
"os"
)
func main() {
h := slog.NewTextHandler(os.Stdout, nil)
logger := slog.New(h)
logger.Info("hello", "env", "dev")
}JSONHandler
slog.NewJSONHandler выдаёт по одному объекту JSON в каждой строке. Это идеальный вариант для рабочих конвейеров журналирования.
package main
import (
"log/slog"
"os"
)
func main() {
h := slog.NewJSONHandler(os.Stdout, nil)
logger := slog.New(h)
logger.Info("hello", "env", "prod")
}Создание логгера
slog.New(handler) оборачивает обработчик в Logger. Для этого экземпляра вызывайте logger.Info, logger.Error и другие методы.
logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))HandlerOptions
Второй аргумент конструктора обработчика — это *slog.HandlerOptions. Передайте nil, чтобы использовать значения по умолчанию, или настройте уровень и расположение исходного кода.
opts := &slog.HandlerOptions{
Level: slog.LevelDebug,
AddSource: true,
}
h := slog.NewJSONHandler(os.Stdout, opts)Запись в файл или буфер
Обработчики принимают любой объект io.Writer. Вы можете записывать журналы в файл, в буфер для проверок или в стандартный вывод. Такое разделение — один из ключевых принципов проектирования slog.
f, _ := os.Create("app.log")
logger := slog.New(slog.NewJSONHandler(f, nil))Настройка логгера по умолчанию
slog.SetDefault(logger) заставляет функции уровня пакета (slog.Info и другие) использовать Ваш обработчик. Установите его один раз при запуске.
slog.SetDefault(slog.New(slog.NewJSONHandler(os.Stdout, nil)))
slog.Info("now JSON by default")Текстовый вывод и вывод JSON
Один и тот же вызов, два формата:
- Текст:
time=... level=INFO msg=hello env=dev - JSON:
{"time":"...","level":"INFO","msg":"hello","env":"dev"}
Выбор обработчика
Практическое правило:
- Локальная разработка: TextHandler (удобен для чтения)
- Рабочая среда и агрегация: JSONHandler (удобен для разбора)
Выбирайте вариант через переменную окружения, чтобы один и тот же двоичный файл мог адаптироваться.
Создание повторно используемой настройки
Централизуйте создание логгера, чтобы всё приложение использовало одну конфигурацию.
func newLogger(prod bool) *slog.Logger {
if prod {
return slog.New(slog.NewJSONHandler(os.Stdout, nil))
}
return slog.New(slog.NewTextHandler(os.Stdout, nil))
}Выполняемая программа: смена обработчиков
Эта программа записывает одно и то же событие через оба обработчика, чтобы Вы могли сравнить форматы.
package main
import (
"log/slog"
"os"
)
func main() {
text := slog.New(slog.NewTextHandler(os.Stdout, nil))
js := slog.New(slog.NewJSONHandler(os.Stdout, nil))
text.Info("login", "user", "ada")
js.Info("login", "user", "ada")
}Быстрая проверка
Проверьте, насколько хорошо Вы поняли обработчики slog.
Итоги
Вы узнали об обработчиках slog:
- Обработчики форматируют и записывают записи, а Logger вызывает их
NewTextHandlerпредназначен для людей, аNewJSONHandler— для машин- Обработчики принимают любой
io.Writerи*HandlerOptions slog.SetDefaultподключает функции уровня пакета
Изучай Go с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 51
- Уроки
- 203
Часто задаваемые вопросы
Урок «Обработчики slog» бесплатный?
Да — полный текст урока «Обработчики slog» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.
Чему я научусь в уроке «Обработчики slog»?
Обработчики текста и JSON Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Go Academy?
Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Обработчики slog»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Go Academy?
Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Зачем нужны структурированные журналы
- Обработчики slog
- Уровни журналирования и атрибуты
- Пользовательские обработчики