Skip to content

Шпаргалка

Создание логгера

СпособКодОписание
Глобальный по умолчаниюdd.Info("msg")Использование без настройки
Режим разработкиdd.New(dd.DevelopmentConfig())Уровень DEBUG, с caller
Пользовательскийdd.New(dd.Config{Targets: ...})Полная конфигурация
Файлdd.New(dd.Config{Targets: []dd.OutputTarget{dd.FileOutput("path")}})Только вывод в файл
Двойной выводdd.New(dd.Config{Targets: []dd.OutputTarget{dd.ConsoleOutput(), dd.FileOutput("path")}})Консоль + файл
JSON двойной выводdd.New(dd.Config{Format: dd.FormatJSON, Targets: []dd.OutputTarget{dd.ConsoleOutput(), dd.FileOutput("path")}})Двойной вывод в формате JSON

Нулевые значения конфигурации

Неустановленные поля в литерале dd.Config{...} в таблице остаются нулевыми (Level=Debug, IncludeTime/IncludeLevel/DynamicCaller=false, вывод без временной метки/уровня/caller). Для производственной среды рекомендуется брать dd.DefaultConfig() за основу и переопределять только нужные поля.

Предустановленные конфигурации

go
dd.DefaultConfig()       // Конфигурация по умолчанию: уровень INFO, текстовый формат
dd.DevelopmentConfig()   // Конфигурация разработки: уровень DEBUG, динамический caller
dd.JSONConfig()          // JSON конфигурация: вывод в формате JSON

Уровни логирования

УровеньКонстантаМетодФорматированный
DebugLevelDebugDebug()Debugf()
InfoLevelInfoInfo()Infof()
WarnLevelWarnWarn()Warnf()
ErrorLevelErrorError()Errorf()
FatalLevelFatalFatal()Fatalf()

Структурированные версии: DebugWith(), InfoWith(), WarnWith(), ErrorWith(), FatalWith()

Конструкторы полей

ТипКонструкторПример
УниверсальныйAny(key, val)dd.Any("data", obj)
СтрокаString(key, val)dd.String("name", "test")
Целое числоInt(key, val)dd.Int("count", 42)
ЛогическийBool(key, val)dd.Bool("ok", true)
ВремяTime(key, val)dd.Time("ts", time.Now())
ДлительностьDuration(key, val)dd.Duration("took", 100*time.Millisecond)
ОшибкаErr(err)dd.Err(err)
Ошибка + стекErrWithStack(err)dd.ErrWithStack(err)

Цепочки полей

go
// Предустановленные поля
entry := dd.WithFields(dd.String("svc", "api"))
entry.Info("Запуск")                    // Автоматически несёт svc=api

// Добавление полей
entry2 := entry.WithField("env", "prod")
entry2.Info("Среда готова")               // Несёт svc + env

Цели вывода

go
// Файловый writer (автоматическая ротация)
fw, _ := dd.NewFileWriter("logs/app.log", dd.DefaultFileWriterConfig())

// Буферизированный writer
bwCfg := dd.DefaultBufferedWriterConfig()
bwCfg.BufferSize = 4096
bw, _ := dd.NewBufferedWriter(os.Stdout, bwCfg)

// Множественный writer
mw := dd.NewMultiWriter(os.Stdout, fw)

Интеграция с контекстом

go
ctx = dd.WithTraceID(ctx, "trace-123")
ctx = dd.WithRequestID(ctx, "req-456")
dd.GetTraceID(ctx)     // "trace-123"
dd.GetRequestID(ctx)   // "req-456"

Конфигурация безопасности

go
dd.DefaultSecurityConfig()   // Базовая фильтрация (рекомендуется)
dd.DefaultSecureConfig()     // Полная фильтрация
dd.HealthcareConfig()        // Соответствие HIPAA
dd.FinancialConfig()         // Соответствие PCI-DSS
dd.GovernmentConfig()        // Правительственный стандарт

Жизненный цикл

go
logger.Flush()                           // Сброс буфера
logger.Close()                           // Закрытие логгера
logger.Shutdown(ctx)                     // Изящное завершение (с таймаутом)
dd.SetDefault(logger)                    // Замена глобального логгера
dd.InitDefault(cfg)                      // Инициализация глобального логгера

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

go
// Через глобальный Logger (с фильтрацией безопасности)
dd.Print("Значение:", val)       // Быстрый вывод
dd.Printf("Формат: %v", val) // Форматированный вывод

// Прямой вывод (без фильтрации безопасности, только для отладки)
dd.JSON(data)              // Отладочный вывод в формате JSON
dd.Text(data)              // Отладочный вывод в текстовом формате
dd.Exit(data)              // Вывод и выход