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
// 方式一:自动初始化(首次调用时创建)
dd.Default().Info("全局日志记录器自动创建")

// 方式二:显式初始化
err := dd.InitDefault(dd.JSONConfig())
if err != nil {
    log.Fatal(err)
}
dd.Default().Info("使用 JSON 配置的全局日志记录器")

// 方式三:替换全局日志记录器
custom, _ := dd.New(dd.Config{
    Level: dd.LevelInfo,
    Targets: []dd.OutputTarget{dd.FileOutput("logs/app.log")},
})
dd.SetDefault(custom)

// 方式四:检查初始化错误
logger, err := dd.DefaultWithErr()
if err != nil {
    log.Printf("全局日志记录器初始化失败: %v", err)
}

配置预设

函数签名说明
DefaultConfigfunc DefaultConfig() Config默认配置(Info 级别、文本格式)
DevelopmentConfigfunc DevelopmentConfig() Config开发配置(Debug 级别)
JSONConfigfunc JSONConfig() ConfigJSON 输出配置
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添加输出写入器
RemoveWriterfunc RemoveWriter(writer io.Writer) error移除输出写入器
WriterCountfunc WriterCount() int获取写入器数量

采样控制(包级)

函数签名说明
SetSamplingfunc SetSampling(config *SamplingConfig)设置采样配置
GetSamplingfunc GetSampling() *SamplingConfig获取采样配置

Writer 构造器

函数签名说明
NewFileWriterfunc NewFileWriter(path string, cfg FileWriterConfig) (*FileWriter, error)创建文件写入器
DefaultFileWriterConfigfunc DefaultFileWriterConfig() FileWriterConfig默认文件写入器配置
NewBufferedWriterfunc NewBufferedWriter(w io.Writer, cfg BufferedWriterConfig) (*BufferedWriter, error)创建缓冲写入器
DefaultBufferedWriterConfigfunc DefaultBufferedWriterConfig() BufferedWriterConfig默认缓冲写入器配置
NewMultiWriterfunc NewMultiWriter(writers ...io.Writer) *MultiWriter创建多输出写入器

安全配置构造器

函数签名说明
DefaultSecurityConfigfunc DefaultSecurityConfig() *SecurityConfig默认安全配置(基础过滤)
DefaultSecureConfigfunc DefaultSecureConfig() *SecurityConfig完整安全配置
HealthcareConfigfunc HealthcareConfig() *SecurityConfigHIPAA 合规配置
FinancialConfigfunc FinancialConfig() *SecurityConfigPCI-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) Fieldint 字段
Int8func Int8(key string, value int8) Fieldint8 字段
Int16func Int16(key string, value int16) Fieldint16 字段
Int32func Int32(key string, value int32) Fieldint32 字段
Int64func Int64(key string, value int64) Fieldint64 字段
Uintfunc Uint(key string, value uint) Fielduint 字段
Uint8func Uint8(key string, value uint8) Fielduint8 字段
Uint16func Uint16(key string, value uint16) Fielduint16 字段
Uint32func Uint32(key string, value uint32) Fielduint32 字段
Uint64func Uint64(key string, value uint64) Fielduint64 字段
Float32func Float32(key string, value float32) Fieldfloat32 字段
Float64func Float64(key string, value float64) Fieldfloat64 字段
Durationfunc Duration(key string, value time.Duration) Field时间段字段
Timefunc Time(key string, value time.Time) Field时间字段
Errfunc Err(err error) Field错误字段(key 为 "error")
ErrWithKeyfunc ErrWithKey(key string, err error) Field自定义 key 的错误字段
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),
)

类型安全建议

优先使用类型明确的构造器(如 IntString),而非 Any,可在编译期捕获类型错误,避免运行时因类型不符产生问题。

字段验证配置

函数签名说明
DefaultFieldValidationConfigfunc DefaultFieldValidationConfig() *FieldValidationConfig默认字段验证(无验证)
StrictSnakeCaseConfigfunc StrictSnakeCaseConfig() *FieldValidationConfig严格 snake_case 验证
StrictCamelCaseConfigfunc StrictCamelCaseConfig() *FieldValidationConfig严格 camelCase 验证

调试输出函数

函数签名说明
Printfunc Print(args ...any)输出到全局日志 Writer(LevelInfo,受安全过滤)
Printlnfunc Println(args ...any)同 Print(底层 Log() 已自动换行,受安全过滤)
Printffunc Printf(format string, args ...any)格式化输出(LevelInfo,受安全过滤)
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 直接输出原始数据,不经过安全过滤

下一步