Отладочный вывод
DD предоставляет набор функций быстрого отладочного вывода для визуализации данных на этапах разработки и отладки.
Пакетные функции отладки
Доступны для прямого вызова через префикс dd.:
Серия Print
| Функция | Сигнатура | Описание |
|---|---|---|
Print | (args ...any) | Вывод в Writer глобального логгера (уровень Info, с фильтрацией безопасности) |
Println | (args ...any) | Аналогично Print (базовый Log() уже добавляет перенос строки, с фильтрацией безопасности) |
Printf | (format string, args ...any) | Форматированный вывод (уровень Info, с фильтрацией безопасности) |
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 (с информацией о вызывающем) |
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 |
dd.Text(complexData)
dd.Textf("Результат обработки: %+v", result)Функция Exit
| Функция | Сигнатура | Описание |
|---|---|---|
Exit | (data ...any) | Текстовый вывод с информацией о вызывающем и выход (exit code 0), сложные типы автоматически красиво печатаются, без фильтрации безопасности |
Exitf | (format string, args ...any) | Форматированный вывод с информацией о вызывающем и выход (exit code 0), без фильтрации безопасности |
dd.Exit("Точка останова", someData)
// Выводит текст с информацией о вызывающем (сложные типы автоматически красиво печатаются), затем вызывает os.Exit(0)Методы Logger
Экземпляр Logger также предоставляет одноимённые методы (кроме Exit/Exitf, доступны только как пакетные функции):
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 и т.д.
Следующие шаги
- Logger -- отладочные методы Logger
- Пакетные функции -- глобальные функции
- Тестовые утилиты -- инструмент тестирования LoggerRecorder