본문 바로가기

프로그래밍/Node.js

[Node.js] NPM Debug 모듈 사용법

반응형
A tiny JavaScript debugging utility modelled after Node.js core's debugging technique. Works in Node.js and web browsers.

Debug(NPM 모듈)는 console.log()를 대신할 수 있는 로깅(디버깅) 모듈로 아래와 같은 장점을 갖고 있다.

  • 로그를 구조화하여 구성 및 기록할 수 있다.
  • 특정한 로그만 볼 수 있도록 지정할 수 있다.
  • 모듈의 크기가 작아(81.5 kB) 활용하는 데에 부담이 없다.

debug 모듈 사용법

const debug = require('debug');

const server = new debug('app:server');
const request = new debug('app:request');

const query = new debug('debug:query');
const axios = new debug('debug:axios');

const error = new debug('error:server');
const fail = new debug('error:request');

server('Server Start');
request('Request is this');

query('selet * from table');
axios('call external api');

error('404 not found');
fail('request failure');

상세한 사용법과 모듈의 옵션은 debug 모듈 github repository에 보다 상세하게 나와있지만,

1. debug 모듈을 install한 뒤, 선언을 하고

2. 로깅으로 남길 debug id를 정의한뒤,

3. 출력하고자 하는 로그 메시지를 정의한 debug id에 argument로 추가한다.

그리고 마지막으로 node를 시작할 때 DEBUG=????의 옵션을 사용하여 debug 모듈을 사용할 수 있다.

debug 모듈 적용기

이미 JavaScript에는 console 함수가 존재한다. 다른 선언과 정의 없이도 사용할 수 있는 편리한 기능임에도 console을 사용하지 않고 debug 모듈로 변경하게 된 이유는 무엇일까?

1. Log의 구조화 

위의 샘플 코드를 보면 출력하고자 하는 로그가 크게 3가지 종류로 나뉘어져 있음을 알 수 있다.

  • app : Application에 대한 Log Group
  • debug : Application의 동작과 관련된 디버깅을 위한 Log Group
  • error : Application의 에러, 오류, 장애 등을 파악하기 위한 Log Goup

출력하고자하는 메시지의 종류를 대분류로 나눈 뒤, 큰 그룹 내에서 개별 상황에 맞게 로그를 Grouping할 수 있다.

적절하게 그룹으로 분류한 로그를 활용해야 하는 시점(디버깅, 장애 대응 등)이 온다면, 그 상황에 필요한 로그만을 찾아서 확인할 수 있는 기준이 될 수 있기 때문에 매우 유용하다.

 

2. 상황에 따른 특정 Log의 출력

debug 모듈은 특정한 로그만 볼 수 있도록 지정할 수 있다.

Local 환경 또는 Dev 환경이라면, 아래와 같이 추적은 어려워도 모든 로그를 출력시키는 것이 편리할 수 있다.

아래의 cmd처럼 정의한 모든 로그 그룹을 포함시킨다고 지정할 경우, 정의한 메시지들이 모두 출력되는 것을 확인할 수 있다.

DEBUG=app*,debug*,error* node ./index.js

특정한 조건에 해당하는 로그만 보고 싶다면 아래와 같은 조건을 DEBUG에 포함시켜주면 된다.

DEBUG=debug:query,error* node ./index.js

 

반응형