Skip to content

Пакетные функции

DD предоставляет богатый набор пакетных функций, доступных для прямого вызова через префикс dd.. Все эти функции выполняются через глобальный логгер (Default()).

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

New

go
func New(cfg ...Config) (*Logger, error)

Создаёт новый экземпляр Logger. Без передачи конфигурации используются настройки по умолчанию.

go
// Конфигурация по умолчанию
logger, _ := dd.New()

// Пользовательская конфигурация
logger, _ := dd.New(dd.DefaultConfig())

// Примечание: принимается только 0 или 1 конфигурация, передача нескольких вернёт ошибку
// logger, _ := dd.New(cfg1, cfg2)  // Ошибка!

Глобальный логгер

Получение и установка

ФункцияСигнатураОписание
Defaultfunc Default() *LoggerПолучить глобальный логгер (ленивая инициализация)
SetDefaultfunc SetDefault(logger *Logger)Установить глобальный логгер
InitDefaultfunc InitDefault(cfg ...Config) errorИнициализировать глобальный логгер конфигурацией
DefaultWithErrfunc DefaultWithErr() (*Logger, error)Получить глобальный логгер и ошибку инициализации
DefaultInitErrorfunc DefaultInitError() errorПолучить ошибку инициализации

Инициализация глобального логгера

go
// Способ 1: Автоматическая инициализация (создаётся при первом вызове)
dd.Default().Info("Глобальный логгер автоматически создан")

// Способ 2: Явная инициализация
err := dd.InitDefault(dd.JSONConfig())
if err != nil {
    log.Fatal(err)
}
dd.Default().Info("Глобальный логгер с JSON-конфигурацией")

// Способ 3: Замена глобального логгера
custom, _ := dd.New(dd.Config{
    Level: dd.LevelInfo,
    Targets: []dd.OutputTarget{dd.FileOutput("logs/app.log")},
})
dd.SetDefault(custom)

// Способ 4: Проверка ошибки инициализации
logger, err := dd.DefaultWithErr()
if err != nil {
    log.Printf("Ошибка инициализации глобального логгера: %v", err)
}

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

ФункцияСигнатураОписание
DefaultConfigfunc DefaultConfig() ConfigКонфигурация по умолчанию (уровень Info, текстовый формат)
DevelopmentConfigfunc DevelopmentConfig() ConfigКонфигурация разработки (уровень Debug)
JSONConfigfunc JSONConfig() ConfigКонфигурация вывода JSON
go
cfg := dd.DefaultConfig()
cfg.Level = dd.LevelDebug
logger, _ := dd.New(cfg)

Конструкторы целей вывода

ФункцияСигнатураОписание
ConsoleOutputfunc ConsoleOutput() OutputTargetВывод в консоль
FileOutputfunc FileOutput(path string) OutputTargetВывод в файл (с ротацией)
CustomOutputfunc CustomOutput(w io.Writer) OutputTargetВывод через пользовательский Writer
go
cfg := dd.DefaultConfig()
cfg.Targets = []dd.OutputTarget{
    dd.ConsoleOutput(),
    dd.FileOutput("logs/app.log"),
    dd.CustomOutput(customWriter),
}
logger, _ := dd.New(cfg)

Базовое логирование (пакетный уровень)

Следующие функции выводят логи через глобальный логгер:

ФункцияСигнатураОписание
Debugfunc Debug(args ...any)Лог уровня Debug
Infofunc Info(args ...any)Лог уровня Info
Warnfunc Warn(args ...any)Лог уровня Warn
Errorfunc Error(args ...any)Лог уровня Error
Fatalfunc Fatal(args ...any)Лог уровня Fatal (по умолчанию вызывает os.Exit(1), defer не выполняется; можно настроить через FatalHandler)
go
dd.Info("Приложение запущено")
dd.Errorf("Пользователь %s не смог войти", username)
dd.Warn("Недостаточно места на диске")

Форматированное логирование (пакетный уровень)

ФункцияСигнатураОписание
Debugffunc Debugf(format string, args ...any)Форматированный лог уровня Debug
Infoffunc Infof(format string, args ...any)Форматированный лог уровня Info
Warnffunc Warnf(format string, args ...any)Форматированный лог уровня Warn
Errorffunc Errorf(format string, args ...any)Форматированный лог уровня Error
Fatalffunc Fatalf(format string, args ...any)Форматированный лог уровня Fatal (по умолчанию вызывает os.Exit(1), defer не выполняется; можно настроить через FatalHandler)

Логирование с указанием уровня (пакетный уровень)

ФункцияСигнатураОписание
Logfunc Log(level LogLevel, args ...any)Лог с указанным уровнем
Logffunc Logf(level LogLevel, format string, args ...any)Форматированный лог с указанным уровнем
LogWithfunc LogWith(level LogLevel, msg string, fields ...Field)Структурированный лог с указанным уровнем
go
dd.Log(dd.LevelDebug, "Отладочная информация")
dd.Logf(dd.LevelWarn, "Предупреждение: %s", reason)
dd.LogWith(dd.LevelError, "Ошибка запроса",
    dd.String("path", "/api/users"),
    dd.Int("status", 500),
)

Структурированное логирование (пакетный уровень)

Следующие функции выводят структурированные логи через глобальный логгер:

ФункцияСигнатураОписание
DebugWithfunc DebugWith(msg string, fields ...Field)Структурированный лог уровня Debug
InfoWithfunc InfoWith(msg string, fields ...Field)Структурированный лог уровня Info
WarnWithfunc WarnWith(msg string, fields ...Field)Структурированный лог уровня Warn
ErrorWithfunc ErrorWith(msg string, fields ...Field)Структурированный лог уровня Error
FatalWithfunc FatalWith(msg string, fields ...Field)Структурированный лог уровня Fatal (по умолчанию вызывает os.Exit(1), defer не выполняется; можно настроить через FatalHandler)
go
dd.InfoWith("Запрос завершён",
    dd.String("method", "GET"),
    dd.Int("status", 200),
)

dd.ErrorWith("Ошибка базы данных",
    dd.Err(err),
    dd.String("query", sql),
)

Управление уровнями (пакетный уровень)

ФункцияСигнатураОписание
SetLevelfunc SetLevel(level LogLevel) errorУстановить глобальный уровень логирования
GetLevelfunc GetLevel() LogLevelПолучить глобальный уровень логирования
IsLevelEnabledfunc IsLevelEnabled(level LogLevel) boolПроверить, включён ли указанный уровень
IsDebugEnabledfunc IsDebugEnabled() boolПроверить, включён ли уровень Debug
IsInfoEnabledfunc IsInfoEnabled() boolПроверить, включён ли уровень Info
IsWarnEnabledfunc IsWarnEnabled() boolПроверить, включён ли уровень Warn
IsErrorEnabledfunc IsErrorEnabled() boolПроверить, включён ли уровень Error
IsFatalEnabledfunc IsFatalEnabled() boolПроверить, включён ли уровень Fatal
go
// Динамическая регулировка уровня логирования
dd.SetLevel(dd.LevelDebug)

// Условное логирование (избегание ненужных вычислений)
if dd.IsDebugEnabled() {
    dd.Debug(computeExpensiveDebugInfo())
}

Цепочки полей (пакетный уровень)

ФункцияСигнатураОписание
WithFieldsfunc WithFields(fields ...Field) *LoggerEntryСоздать Entry с предустановленными полями
WithFieldfunc WithField(key string, value any) *LoggerEntryСоздать Entry с одним предустановленным полем
go
dd.WithFields(dd.String("service", "api"), dd.String("version", "1.0")).
    Info("Запрос обработан")

dd.WithField("request_id", "abc123").Info("Обработка запроса")

Жизненный цикл (пакетный уровень)

ФункцияСигнатураОписание
Flushfunc Flush() errorСбросить буфер глобального логгера

Управление Writer (пакетный уровень)

ФункцияСигнатураОписание
AddWriterfunc AddWriter(writer io.Writer) errorДобавить writer вывода
RemoveWriterfunc RemoveWriter(writer io.Writer) errorУдалить writer вывода
WriterCountfunc WriterCount() intПолучить количество writer'ов

Управление сэмплированием (пакетный уровень)

ФункцияСигнатураОписание
SetSamplingfunc SetSampling(config *SamplingConfig)Установить конфигурацию сэмплирования
GetSamplingfunc GetSampling() *SamplingConfigПолучить конфигурацию сэмплирования

Конструкторы Writer

ФункцияСигнатураОписание
NewFileWriterfunc NewFileWriter(path string, cfg FileWriterConfig) (*FileWriter, error)Создать файловый writer
DefaultFileWriterConfigfunc DefaultFileWriterConfig() FileWriterConfigКонфигурация файлового writer по умолчанию
NewBufferedWriterfunc NewBufferedWriter(w io.Writer, cfg BufferedWriterConfig) (*BufferedWriter, error)Создать буферизованный writer
DefaultBufferedWriterConfigfunc DefaultBufferedWriterConfig() BufferedWriterConfigКонфигурация буферизованного writer по умолчанию
NewMultiWriterfunc NewMultiWriter(writers ...io.Writer) *MultiWriterСоздать многоцелевой writer

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

ФункцияСигнатураОписание
DefaultSecurityConfigfunc DefaultSecurityConfig() *SecurityConfigКонфигурация безопасности по умолчанию (базовая фильтрация)
DefaultSecureConfigfunc DefaultSecureConfig() *SecurityConfigПолная конфигурация безопасности
HealthcareConfigfunc HealthcareConfig() *SecurityConfigКонфигурация соответствия HIPAA
FinancialConfigfunc FinancialConfig() *SecurityConfigКонфигурация соответствия PCI-DSS
GovernmentConfigfunc GovernmentConfig() *SecurityConfigКонфигурация правительственного стандарта
SecurityConfigForLevelfunc SecurityConfigForLevel(level SecurityLevel) *SecurityConfigПолучить конфигурацию безопасности по уровню

Конструкторы фильтрации конфиденциальных данных

ФункцияСигнатураОписание
NewSensitiveDataFilterfunc NewSensitiveDataFilter() *SensitiveDataFilterФильтр с полным набором шаблонов
NewEmptySensitiveDataFilterfunc NewEmptySensitiveDataFilter() *SensitiveDataFilterПустой фильтр
NewCustomSensitiveDataFilterfunc NewCustomSensitiveDataFilter(patterns ...string) (*SensitiveDataFilter, error)Фильтр с пользовательскими шаблонами

Конструкторы хуков

ФункцияСигнатураОписание
NewHookRegistryfunc NewHookRegistry() *HookRegistryСоздать реестр хуков
NewHooksFromConfigfunc NewHooksFromConfig(cfg HooksConfig) *HookRegistryСоздать реестр хуков из конфигурации

Конструкторы аудитных логов

ФункцияСигнатураОписание
NewAuditLoggerfunc NewAuditLogger(cfg AuditConfig) (*AuditLogger, error)Создать аудитный логгер
DefaultAuditConfigfunc DefaultAuditConfig() AuditConfigКонфигурация аудита по умолчанию
VerifyAuditEventfunc VerifyAuditEvent(entry string, signer *IntegritySigner) *AuditVerificationResultПроверить целостность аудитного события

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

ФункцияСигнатураОписание
NewIntegritySignerfunc NewIntegritySigner(cfg IntegrityConfig) (*IntegritySigner, error)Создать подписывающее устройство целостности
DefaultIntegrityConfigSafefunc DefaultIntegrityConfigSafe() (IntegrityConfig, error)Конфигурация со случайным ключом

Конструкторы тестовых утилит

ФункцияСигнатураОписание
NewLoggerRecorderfunc NewLoggerRecorder() *LoggerRecorderСоздать регистратор логов (для тестирования)

Функции контекста

ФункцияСигнатураОписание
WithTraceIDfunc WithTraceID(ctx context.Context, traceID string) context.ContextУстановить Trace ID
WithSpanIDfunc WithSpanID(ctx context.Context, spanID string) context.ContextУстановить Span ID
WithRequestIDfunc WithRequestID(ctx context.Context, requestID string) context.ContextУстановить Request ID
GetTraceIDfunc GetTraceID(ctx context.Context) stringПолучить Trace ID
GetSpanIDfunc GetSpanID(ctx context.Context) stringПолучить Span ID
GetRequestIDfunc GetRequestID(ctx context.Context) stringПолучить Request ID

Конфигурация JSON

ФункцияСигнатураОписание
DefaultJSONOptionsfunc DefaultJSONOptions() *JSONOptionsПараметры вывода JSON по умолчанию

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

Используются для создания структурированных полей логов (Field), в сочетании с методами серии *With или WithFields.

ФункцияСигнатураОписание
Anyfunc Any(key string, value any) FieldПоле произвольного типа
Stringfunc String(key, value string) FieldСтроковое поле
Boolfunc Bool(key string, value bool) FieldЛогическое поле
Intfunc Int(key string, value int) FieldПоле int
Int8func Int8(key string, value int8) FieldПоле int8
Int16func Int16(key string, value int16) FieldПоле int16
Int32func Int32(key string, value int32) FieldПоле int32
Int64func Int64(key string, value int64) FieldПоле int64
Uintfunc Uint(key string, value uint) FieldПоле uint
Uint8func Uint8(key string, value uint8) FieldПоле uint8
Uint16func Uint16(key string, value uint16) FieldПоле uint16
Uint32func Uint32(key string, value uint32) FieldПоле uint32
Uint64func Uint64(key string, value uint64) FieldПоле uint64
Float32func Float32(key string, value float32) FieldПоле float32
Float64func Float64(key string, value float64) FieldПоле float64
Durationfunc Duration(key string, value time.Duration) FieldПоле временного интервала
Timefunc Time(key string, value time.Time) FieldПоле времени
Errfunc Err(err error) FieldПоле ошибки (ключ "error")
ErrWithKeyfunc ErrWithKey(key string, err error) FieldПоле ошибки с пользовательским ключом
ErrWithStackfunc ErrWithStack(err error) FieldПоле ошибки со стеком вызовов
go
dd.InfoWith("Запрос завершён",
    dd.String("method", "GET"),
    dd.Int("status", 200),
    dd.Duration("elapsed", 100*time.Millisecond),
    dd.Err(err),
)

Типобезопасность

Предпочитайте типизированные конструкторы (такие как Int, String) вместо Any — это позволяет выявлять несоответствие типов на этапе компиляции и избегать ошибок времени выполнения, вызванных неверным типом.

Конфигурация валидации полей

ФункцияСигнатураОписание
DefaultFieldValidationConfigfunc DefaultFieldValidationConfig() *FieldValidationConfigВалидация полей по умолчанию (без валидации)
StrictSnakeCaseConfigfunc StrictSnakeCaseConfig() *FieldValidationConfigСтрогая валидация snake_case
StrictCamelCaseConfigfunc StrictCamelCaseConfig() *FieldValidationConfigСтрогая валидация camelCase

Функции отладочного вывода

ФункцияСигнатураОписание
Printfunc Print(args ...any)Вывод в Writer глобального логгера (уровень Info, с фильтрацией безопасности)
Printlnfunc Println(args ...any)Аналогично Print (базовый Log() уже добавляет перенос строки, с фильтрацией безопасности)
Printffunc Printf(format string, args ...any)Форматированный вывод (уровень Info, с фильтрацией безопасности)
JSONfunc JSON(data ...any)Компактный вывод JSON в stdout (с информацией о вызывающем, без фильтрации безопасности)
JSONFfunc JSONF(format string, args ...any)Форматированная строка как компактный JSON в stdout (с информацией о вызывающем, без фильтрации безопасности)
Textfunc Text(data ...any)Красивый вывод в stdout (без фильтрации безопасности)
Textffunc Textf(format string, args ...any)Форматированный текстовый вывод в stdout (без фильтрации безопасности)
Exitfunc Exit(data ...any)Текстовый вывод с информацией о вызывающем и выход (exit code 0), сложные типы автоматически красиво печатаются, без фильтрации безопасности
Exitffunc Exitf(format string, args ...any)Форматированный вывод с информацией о вызывающем и выход (exit code 0, без фильтрации безопасности)

Предупреждение о безопасности функций отладки

Print/Println/Printf проходят через фильтрацию безопасности, но JSON/JSONF/Text/Textf/Exit/Exitf выводят исходные данные напрямую, без фильтрации безопасности.

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