728x90
반응형
1. console 객체란
console은 Node.js에서 표준 출력(stdout)과 표준 에러(stderr)로 메시지를 출력하기 위한 글로벌 객체입니다. 디버깅, 로깅, 성능 측정 등에 사용되며, 브라우저의 console과 유사한 API를 제공합니다.
2. 기본 출력 메서드
2.1 log, info, warn, error
// 표준 출력 (stdout)
console.log('일반 로그 메시지');
console.info('정보 메시지');
// 표준 에러 (stderr)
console.warn('경고 메시지');
console.error('에러 메시지');
// 출력 스트림 차이
// console.log → process.stdout
// console.error → process.stderr
2.2 형식 지정자
// %s - 문자열
console.log('이름: %s', '홍길동');
// 이름: 홍길동
// %d, %i - 정수
console.log('나이: %d세', 30);
// 나이: 30세
// %f - 부동소수점
console.log('가격: %f원', 1234.56);
// 가격: 1234.56원
// %j - JSON
console.log('객체: %j', { name: 'test', value: 123 });
// 객체: {"name":"test","value":123}
// %o, %O - 객체
console.log('객체: %o', { name: 'test' });
// 객체: { name: 'test' }
// %% - 퍼센트 기호
console.log('진행률: %d%%', 75);
// 진행률: 75%
3. 객체 출력
3.1 console.dir()
객체를 상세하게 출력합니다.
const obj = {
name: 'test',
nested: {
level1: {
level2: {
level3: 'deep value'
}
}
}
};
// 기본 출력 (깊이 2까지)
console.dir(obj);
// 옵션 지정
console.dir(obj, {
depth: null, // 모든 깊이 표시 (기본값: 2)
colors: true, // 색상 출력
showHidden: true // 숨겨진 속성 표시
});
3.2 console.table()
배열이나 객체를 테이블 형식으로 출력합니다.
// 배열 테이블
const users = [
{ name: '홍길동', age: 30, city: '서울' },
{ name: '김철수', age: 25, city: '부산' },
{ name: '이영희', age: 28, city: '대구' }
];
console.table(users);
/*
┌─────────┬──────────┬─────┬────────┐
│ (index) │ name │ age │ city │
├─────────┼──────────┼─────┼────────┤
│ 0 │ '홍길동' │ 30 │ '서울' │
│ 1 │ '김철수' │ 25 │ '부산' │
│ 2 │ '이영희' │ 28 │ '대구' │
└─────────┴──────────┴─────┴────────┘
*/
// 특정 컬럼만 출력
console.table(users, ['name', 'age']);
// 객체 테이블
const scores = {
math: 90,
english: 85,
science: 95
};
console.table(scores);
4. 시간 측정
4.1 time, timeEnd, timeLog
// 시간 측정 시작
console.time('작업');
// 작업 수행
for (let i = 0; i < 1000000; i++) {
// 반복 작업
}
// 중간 시간 출력 (타이머 계속 유지)
console.timeLog('작업', '중간 체크');
// 작업: 50.123ms 중간 체크
// 시간 측정 종료
console.timeEnd('작업');
// 작업: 123.456ms
4.2 여러 타이머 동시 사용
console.time('전체');
console.time('작업1');
// 작업 1 수행
await task1();
console.timeEnd('작업1'); // 작업1: 100ms
console.time('작업2');
// 작업 2 수행
await task2();
console.timeEnd('작업2'); // 작업2: 200ms
console.timeEnd('전체'); // 전체: 300ms
5. 카운터
// 호출 횟수 카운트
console.count('myCounter'); // myCounter: 1
console.count('myCounter'); // myCounter: 2
console.count('myCounter'); // myCounter: 3
// 다른 레이블
console.count('other'); // other: 1
console.count('myCounter'); // myCounter: 4
// 카운터 리셋
console.countReset('myCounter');
console.count('myCounter'); // myCounter: 1
반응형
6. 그룹화
console.group('사용자 정보');
console.log('이름: 홍길동');
console.log('나이: 30');
console.group('주소');
console.log('도시: 서울');
console.log('구: 강남구');
console.groupEnd();
console.groupEnd();
/*
출력:
사용자 정보
이름: 홍길동
나이: 30
주소
도시: 서울
구: 강남구
*/
// 접힌 그룹 (브라우저에서 더 유용)
console.groupCollapsed('상세 정보');
console.log('숨겨진 내용');
console.groupEnd();
7. 조건부 출력과 스택 트레이스
7.1 console.assert()
조건이 false일 때만 출력합니다.
const value = 10;
console.assert(value > 5, 'value는 5보다 커야 합니다');
// 조건이 true이므로 출력 없음
console.assert(value > 15, 'value는 15보다 커야 합니다');
// Assertion failed: value는 15보다 커야 합니다
7.2 console.trace()
호출 스택을 출력합니다.
function outer() {
inner();
}
function inner() {
console.trace('호출 스택 추적');
}
outer();
/*
Trace: 호출 스택 추적
at inner (/path/to/file.js:6:11)
at outer (/path/to/file.js:2:3)
at Object.<anonymous> (/path/to/file.js:9:1)
*/
8. 출력 지우기
// 콘솔 화면 지우기 (터미널에서 동작)
console.clear();
9. 커스텀 Console 인스턴스
파일이나 다른 스트림으로 출력할 수 있습니다.
const fs = require('fs');
const { Console } = require('console');
// 파일로 로그 출력
const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');
const logger = new Console({
stdout: output,
stderr: errorOutput
});
logger.log('이 메시지는 stdout.log에 저장됩니다');
logger.error('이 메시지는 stderr.log에 저장됩니다');
10. 색상 출력
// ANSI 이스케이프 코드 사용
console.log('\x1b[31m빨간색 텍스트\x1b[0m');
console.log('\x1b[32m초록색 텍스트\x1b[0m');
console.log('\x1b[33m노란색 텍스트\x1b[0m');
console.log('\x1b[34m파란색 텍스트\x1b[0m');
// 배경색
console.log('\x1b[41m빨간 배경\x1b[0m');
// 스타일
console.log('\x1b[1m굵은 텍스트\x1b[0m');
console.log('\x1b[4m밑줄 텍스트\x1b[0m');
// util.inspect.colors 사용
const util = require('util');
console.log(util.inspect({ name: 'test' }, { colors: true }));
결론
console 객체는 Node.js에서 디버깅과 로깅을 위한 핵심 도구입니다. log, error, warn으로 기본 출력을 하고, time/timeEnd로 성능을 측정하며, table로 데이터를 보기 좋게 출력할 수 있습니다. 프로덕션 환경에서는 winston이나 pino 같은 전문 로깅 라이브러리를 사용하는 것이 권장됩니다.
728x90
반응형
'Node.js' 카테고리의 다른 글
| Node.js의 타이머 함수(Timer Functions) (0) | 2026.02.25 |
|---|---|
| Node.js의 프로세스 객체(process object) (0) | 2026.02.25 |
| Node.js의 글로벌 객체(Global Objects) (0) | 2026.02.24 |
| Node.js의 버퍼(Buffer) 사용법 (0) | 2026.02.24 |
| Node.js의 스트림 모듈(stream module) (0) | 2026.02.24 |