노드에서 사용하는 console 역시 디버깅을 위한 객체입니다. 다만 브라우저와는 달리 window 객체가 아닌 global 객체 안에 들어있다는 것이 차이입니다. 사용함에 있어서는 큰 차이를 느낄 수 없을 것입니다.
console.log로 대표되는 메서드들을 사용할 수 있는데, console.log 이외의 다른 로깅 함수들에 대해서도 예제를 통해서 살펴보겠습니다.
const string = 'abc';
const number = 1;
const boolean = true;
const obj = {
outside: {
inside: {
key: 'value',
}
}
};
console.time('entire time');
console.log('normal log');
console.log(string, number, boolean);
console.error('error message');
console.table( [ { name: 'black nut', lable: 'Indigo'}, { name: 'beenzino', lable: 'himself'} ] );
console.dir(obj, { colors: false, depth: 2 });
console.dir(obj, { colors: true, depth: 1 });
console.time('time start');
for (let i = 0; i <10000; i++) {}
console.timeEnd('time start');
function b() {
console.trace('error position tracking');
}
function a() {
b();
}
a();
console.timeEnd('entire time');
/* 출력
normal log
abc 1 true
error message
┌─────────┬─────────────┬───────────┐
│ (index) │ name │ lable │
├─────────┼─────────────┼───────────┤
│ 0 │ 'black nut' │ 'Indigo' │
│ 1 │ 'beenzino' │ 'himself' │
└─────────┴─────────────┴───────────┘
{ outside: { inside: { key: 'value' } } }
{ outside: { inside: [Object] } }
time start: 0.152ms
Trace: error position tracking
at b (X:\XX\XX\example.js:29:13)
at a (X:\XX\XX\example.js:33:5)
at Object.<anonymous> (X:\XX\XX\example.js:36:1)
at Module._compile (node:internal/modules/cjs/loader:1376:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
at Module.load (node:internal/modules/cjs/loader:1207:32)
at Module._load (node:internal/modules/cjs/loader:1023:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12)
at node:internal/main/run_main_module:28:49
entire time: 11.066ms
*/
예제 자체는 꽤 긴 내용이지만, 함수 하나하나를 살펴보면 크게 어렵지 않게 이해할 수 있습니다. 다음과 같이 짚어보도록 하겠습니다.
함수 | 설명 |
console.time(lable) | console.timeEnd(lable)과 대응해, 같은 레이블을 가진 time과 timeEnd 사이의 시간을 측정한다. |
console.log(xxx) | 평범한 로그를 표시한다. console.log(내용, 내용, 내용...); 형식으로 여러개를 동시에 출력 가능하다. |
console.error(error) | 에러 내용을 콘솔에 출력한다. |
console.table(array) | 배열의 요소로 '객체 리터럴'을 입력하면, 객체의 속성들이 테이블 형식으로 표시된다. |
console.dir(object, option) | 객체를 출력한다. 첫 번째 인수는 표시할 객체이며 두 번째 인수는 출력 옵션이다. colors를 true로 선언해 색상을 통해 보기 편하게 만들고, depth로 객체 안의 몇 단계까지 보여줄지를 결정한다. 디폴트 값은 2이다. |
console.trace(lable) | 에러가 어디서 발생했는지 추적한다. 통상적으로 에러 위치는 이 기능이 없어도 알 수 있지만, 특이 사항이 발생할 경우 사용한다. |
'Programming > Node.js' 카테고리의 다른 글
4. Node 기능 살펴보기 (3) - 노드 내장 객체 : 타이머2 (0) | 2024.04.01 |
---|---|
4. Node 기능 살펴보기 (3) - 노드 내장 객체 : 타이머 1 (1) | 2024.03.29 |
4. Node 기능 살펴보기 (3) - 노드 내장 객체 : global (0) | 2024.03.27 |
4. Node 기능 살펴보기 (2) - 모듈 사용하기 : __filename, __dirname (0) | 2024.03.26 |
4. Node 기능 살펴보기 (2) - 모듈 사용하기 : 다이나믹 임포트 (0) | 2024.03.22 |