2019-9-18 Logging

로깅

  • express에서 로깅을 하기 위해 winston을 사용하기로 했다.
  • console.log를 사용하면 뭐가 잘못됬나? console.log는 잘못된게 없지만 windston을 사용하면 4가지 특징이 있다. stream, transports, formatting, levels
npm i --save winston

// /configs/winston.js
import fs from 'fs';
import winston from 'winston';

const logDir = __dirname + '/../logs';

if (!fs.existsSync(logDir)) {
  fs.mkdirSync(logDir);
}

const infoTransport = new winston.transports.File({
  filename: 'info.log',
  dirname: logDir,
  level: 'info',
});

const errorTransport = new winston.transports.File({
  filename: 'error.log',
  dirname: logDir,
  level: 'error',
});

const logger = winston.createLogger({
  transports: [infoTransport, errorTransport],
});

const stream = {
  write: (messages) => {
    logger.info(messages);
  },
};

export { logger, stream };

// app.js
app.use(morgan('combined', { stream }));

느낀점

  • 어제오늘 winston, morgan을 이용해서 로깅을 추적하는것을 구축했다. 어제는 단순히 winston이였는데, 그것을 활용해서 다양한 로그 레벨에서의 문제들을 트래킹할 수 있었다.
Written on September 18, 2019