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 구성: DEBUG 레벨 + 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()                           // 버퍼 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)              // 출력 후 종료