Skip to content

Отладочный вывод

DD предоставляет набор функций быстрого отладочного вывода для визуализации данных на этапах разработки и отладки.

Пакетные функции отладки

Доступны для прямого вызова через префикс dd.:

Серия Print

ФункцияСигнатураОписание
Print(args ...any)Вывод в Writer глобального логгера (уровень Info, с фильтрацией безопасности)
Println(args ...any)Аналогично Print (базовый Log() уже добавляет перенос строки, с фильтрацией безопасности)
Printf(format string, args ...any)Форматированный вывод (уровень Info, с фильтрацией безопасности)
go
dd.Print("Значение:", 42, true)
dd.Println("Аналогично Print")
dd.Printf("Пользователь: %s, ID: %d", name, id)

Фильтрация безопасности

Серия функций Print проходит через фильтрацию конфиденциальных данных, подходит для вывода отладочных данных, которые могут содержать конфиденциальную информацию.

Вывод JSON

ФункцияСигнатураОписание
JSON(data ...any)Компактный вывод JSON в stdout (с информацией о вызывающем)
JSONF(format string, args ...any)Форматированная строка как компактный JSON в stdout (с информацией о вызывающем)
go
user := map[string]any{"name": "admin", "role": "super"}
dd.JSON(user)
// Вывод: main.go:42 {"name":"admin","role":"super"}

Без фильтрации безопасности

JSON/JSONF выводят исходные данные напрямую, без фильтрации конфиденциальных данных. Не используйте в производственной среде.

Вывод Text

ФункцияСигнатураОписание
Text(data ...any)Красивый вывод в stdout
Textf(format string, args ...any)Форматированный текстовый вывод в stdout
go
dd.Text(complexData)
dd.Textf("Результат обработки: %+v", result)

Функция Exit

ФункцияСигнатураОписание
Exit(data ...any)Текстовый вывод с информацией о вызывающем и выход (exit code 0), сложные типы автоматически красиво печатаются, без фильтрации безопасности
Exitf(format string, args ...any)Форматированный вывод с информацией о вызывающем и выход (exit code 0), без фильтрации безопасности
go
dd.Exit("Точка останова", someData)
// Выводит текст с информацией о вызывающем (сложные типы автоматически красиво печатаются), затем вызывает os.Exit(0)

Методы Logger

Экземпляр Logger также предоставляет одноимённые методы (кроме Exit/Exitf, доступны только как пакетные функции):

go
logger := dd.Default()

// Серия Print записывает в настроенный Writer (с фильтрацией безопасности)
logger.Print("Метод экземпляра")

// JSON/Text выводят напрямую в stdout (без фильтрации безопасности)
logger.JSON(data)
logger.Text(data)

Разница между методами Logger и пакетными функциями

logger.Print() выводит через Writer текущего экземпляра Logger с фильтрацией безопасности, dd.Print() выводит через Writer глобального логгера с фильтрацией безопасности. Поведение аналогично, но цель вывода может отличаться. logger.JSON() и logger.Text() аналогичны dd.JSON() и dd.Text(), выводят напрямую в stdout, без фильтрации безопасности.

Сценарии применения

СценарийРекомендуемая функция
Быстрый вывод значенияdd.Print()
Просмотр структурыdd.JSON()
Форматированный выводdd.Text()
Точка останова при отладкеdd.Exit()
Может содержать конфиденциальную информациюdd.Print() (автоматическая фильтрация)
Данные анализа производительностиdd.JSON()

Только для отладки

Серии JSON, Text, Exit предназначены для отладки при разработке, не следует использовать в производственном коде (они не проходят фильтрацию конфиденциальных данных и выводят напрямую в stdout). Print/Println/Printf ведут себя аналогично Info (LevelInfo + фильтрация безопасности + настроенный writer) и пригодны для продакшена. В производственной среде предпочтительнее использовать стандартные методы логирования Info, Error и т.д.

Следующие шаги