Node.js 디버깅: console.log vs console.dir 차이와 사용법(예제·옵션)
디버깅 중 콘솔 출력은 데이터 구조를 정확히 파악하는 데 핵심입니다. 특히 객체/JSON을 다룰 때는 console.log와 console.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 예제 결과

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 예제 결과

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 응답·설정 객체처럼 중첩이 깊은 데이터는 dir에 depth 옵션을 곁들이면 디버깅 시간이 확 줄어듭니다.
참고 자료
관련 이전 게시글
- Node.js 비동기 처리: Callback·Promise·async/await
- Node.js 파일 읽기/쓰기: 동기식 vs 비동기식
- Node.js 이벤트 처리: on·once·removeListener
- Node.js 스트리밍으로 파일 처리하기
- NPM 사용법과 package.json 역할
이 글이 도움이 되셨다면 공유 부탁 드립니다.



