调试输出
DD 提供一组快速调试输出函数,用于开发和调试阶段的数据可视化。
包级调试函数
通过 dd. 前缀直接调用:
Print 系列
| 函数 | 签名 | 说明 |
|---|---|---|
Print | (args ...any) | 输出到全局日志记录器的 Writer(LevelInfo,受安全过滤) |
Println | (args ...any) | 同 Print(底层 Log() 已自动换行,受安全过滤) |
Printf | (format string, args ...any) | 格式化输出(LevelInfo,受安全过滤) |
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() 通过当前 Logger 实例配置的 Writer 输出并经过安全过滤,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 等标准日志方法。