본문 바로가기

Programming/Node.js

4. Node 기능 살펴보기 (3) - 노드 내장 객체 : console

node js logo image

 

 

 

 

노드에서 사용하는 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) 에러가 어디서 발생했는지 추적한다. 통상적으로 에러 위치는 이 기능이 없어도 알 수 있지만, 특이 사항이 발생할 경우 사용한다.