Skip to content

디버그 출력

DD 는 개발과 디버그 단계의 데이터 시각화를 위한 빠른 디버그 출력 함수 세트를 제공합니다.

패키지 수준 디버그 함수

dd. 접두사로 직접 호출합니다.

함수시그니처설명
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)stdout 으로 컴팩트 JSON 출력 (caller 정보 포함)
JSONF(format string, args ...any)포맷팅 문자열을 컴팩트 JSON 으로 stdout 에 출력 (caller 정보 포함)
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)caller 정보 포함 텍스트 출력 후 종료 (exit code 0), 복잡한 타입은 자동 보기 좋게 출력, 보안 필터 미적용
Exitf(format string, args ...any)caller 정보 포함 포맷팅 출력 후 종료 (exit code 0, 보안 필터 미적용)
go
dd.Exit("디버그 중단점", someData)
// caller 정보 포함 텍스트 (복잡한 타입은 자동 보기 좋게 출력) 출력 후 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/PrintfInfo와 동일한 동작 (LevelInfo + 보안 필터 + 구성된 writer) 이므로 프로덕션에 사용할 수 있습니다. 프로덕션 환경에서는 Info, Error 등 표준 로그 메서드를 우선 사용하세요.

다음 단계