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() 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() boolDebug レベルが有効か確認
IsInfoEnabledfunc IsInfoEnabled() boolInfo レベルが有効か確認
IsWarnEnabledfunc IsWarnEnabled() boolWarn レベルが有効か確認
IsErrorEnabledfunc IsErrorEnabled() boolError レベルが有効か確認
IsFatalEnabledfunc IsFatalEnabled() boolFatal レベルが有効か確認
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.ContextTrace ID を設定
WithSpanIDfunc WithSpanID(ctx context.Context, spanID string) context.ContextSpan ID を設定
WithRequestIDfunc WithRequestID(ctx context.Context, requestID string) context.ContextRequest ID を設定
GetTraceIDfunc GetTraceID(ctx context.Context) stringTrace ID を取得
GetSpanIDfunc GetSpanID(ctx context.Context) stringSpan ID を取得
GetRequestIDfunc GetRequestID(ctx context.Context) stringRequest 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),
)

型安全性の推奨

Any よりも型が明確なコンストラクタ(IntString など)を優先することで、コンパイル時に型エラーを検出でき、実行時に型不一致で問題が発生するのを防げます。

フィールド検証設定

関数シグネチャ説明
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)pretty-print フォーマットで stdout に出力(セキュリティフィルタリングなし)
Textffunc Textf(format string, args ...any)フォーマットテキストを stdout に出力(セキュリティフィルタリングなし)
Exitfunc Exit(data ...any)呼び出し元情報付きテキスト出力後に終了(exit code 0)、複雑な型は自動 pretty-print、セキュリティフィルタリングなし
Exitffunc Exitf(format string, args ...any)呼び出し元情報付きフォーマット出力後に終了(exit code 0、セキュリティフィルタリングなし)

デバッグ関数のセキュリティに関する注意

Print/Println/Printf はセキュリティフィルタリングを経ますが、JSON/JSONF/Text/Textf/Exit/Exitf は生データを直接出力し、セキュリティフィルタリングを経ません

次のステップ

  • Logger -- Logger インスタンスメソッド詳解
  • LoggerEntry -- プリセットフィールド付きログ Entry
  • 設定 -- Config 構造体
  • デバッグ出力 -- デバッグビジュアライゼーション関数