Node.js 디버깅 필수: console.log와 console.dir 차이점과 사용법

Node.js 디버깅: console.log vs console.dir 차이와 사용법(예제·옵션)

디버깅 중 콘솔 출력은 데이터 구조를 정확히 파악하는 데 핵심입니다. 특히 객체/JSON을 다룰 때는 console.logconsole.dir의 동작 차이를 이해해야 필요한 정보만 선명하게 볼 수 있습니다. 이 글은 두 함수의 특징, 옵션, 실무 팁을 한 번에 정리합니다.

1) console.log: 가장 익숙한 범용 출력

문자열·숫자·객체 등 모든 타입을 출력합니다. 객체는 요약된 1~2 레벨까지만 보이는 경우가 많아 깊은 중첩 구조를 파악하기엔 한계가 있습니다.

예제

const user = {
  name: 'blueshare',
  age: 30,
  email: 'blueshare@example.com'
};

console.log(user);                       // 객체 요약 출력
console.log('User name is:', user.name); // 포맷팅 메시지

▼ console.log 예제 결과

console.log 예제 결과

2) console.dir: 객체 구조를 ‘깊게’ 탐색

console.dir은 객체 전용 진단에 적합합니다. depth(깊이), colors(색상) 등 옵션을 제공해 중첩 구조·프로퍼티를 더 자세히 확인할 수 있습니다.

예제

const user = {
  name: 'BlueShare',
  age: 30,
  email: 'BlueShare@example.com',
  address: { street: '강남구', city: '서울시', zip: '12345' }
};

console.dir(user, { depth: null, colors: true }); // 모든 깊이를 컬러로 출력

depth: null은 제한 없이 깊게 출력, colors: true는 터미널 컬러 하이라이트를 켭니다.

▼ console.dir 예제 결과

console.dir 예제 결과

3) 한눈에 비교

항목console.log()console.dir()
주 용도메시지·간단 값 출력객체 구조 진단(깊이 탐색)
깊이 제어불가(요약 표시가 흔함)depth 옵션으로 제어(null은 무제한)
가독성간단/짧은 데이터에 유리colors로 하이라이트, 중첩 구조 파악 쉬움
대안JSON.stringify(obj, null, 2)로 문자열화console.dir(obj, {showHidden:true})로 심화

4) 실무 팁

  • 대상에 맞춰 선택: 메시지/단일 값은 log, 중첩/복잡 객체는 dir.
  • 과도한 출력 주의: 무한 순환 참조가 있으면 JSON.stringify는 에러가 나므로 dir 또는 순환 제거 유틸을 사용하세요.
  • 포맷팅: 긴 객체는 dir(obj, { depth: 2 })처럼 적당한 깊이로 잘라 출력.
  • 환경 차이: 일부 런타임/터미널에선 색상 옵션이 제한될 수 있습니다.

결론

간단한 로그/메시지는 console.log, 구조 분석은 console.dir을 사용하세요. 특히 API 응답·설정 객체처럼 중첩이 깊은 데이터dirdepth 옵션을 곁들이면 디버깅 시간이 확 줄어듭니다.

참고 자료

관련 이전 게시글

이 글이 도움이 되셨다면 공유 부탁 드립니다.

위로 스크롤