본 문서는 Logging 라이브러리 winston 을 모듈화 하여 프로젝트와 의존하지 않은 코드를 작성하였습니다. 프로젝트의 오류와 반영된 코드 및 결과 값들을 파악하여 동작을 이해할 때 사용하기도 합니다.
그러면 아래 예제를 통해 시작해보도록 하죠.
# Contents
- winston Install
- 예제 코드
# winston Install
해당 라이브러리를 이용하기 위해 우리는 2개의 라이브러리를 설치할 예정입니다.
- winston : 로깅을 도와주는 실질적인 라이브러리 입니다.
- winston-daily-rotate-file : winston에서 로깅된 로그들을 파일로 저장해주는 winston 유틸리티 라이브러리입니다.
설치 방법은 아래와 같습니다.
npm install --save winston
npm install --save winston-daily-rotate-file
# 예제 코드
winston 설치가 완료되었으면 아래 정리된 모듈을 복붙해주세요. 해당 모듈을 사용하게 되면 어떠한 의존성 없이 로그를 출력 및 저장할 수 있으며, 사용법도 아주 간단합니다.
저는 로그 모듈 파일을 logger.js로 만들었습니다. 그리고 아래 내용을 복붙하였습니다.
const winston = require("winston");
const winstonDaily = require("winston-daily-rotate-file");
let alignColorsAndTime = winston.format.combine(
winston.format.colorize({
all: true,
}),
winston.format.label({
label: "[LOGGER]",
}),
winston.format.timestamp({
format: "YYYY-MM-DD HH:MM:SS",
}),
// winston.format.printf((info) => ` ${info.label} ${info.timestamp} ${info.level} : ${info.message}`)
winston.format.printf((info) => `[${info.timestamp}] | [${info.level}] | ${info.message}`)
);
let notalignColorsAndTime = winston.format.combine(
winston.format.label({
label: "[LOGGER]",
}),
winston.format.timestamp({
format: "YYYY-MM-DD HH:MM:SS",
}),
winston.format.printf((info) => `[${info.timestamp}] | [${info.level}] | ${info.message}`)
);
const logger = winston.createLogger({
level: "debug",
transports: [
new winstonDaily({
filename: "logs/my_log",
zippedArchive: true,
format: winston.format.combine(notalignColorsAndTime),
}),
new winston.transports.Console({
format: winston.format.combine(winston.format.colorize(), alignColorsAndTime),
}),
],
});
module.exports = logger;
실질적인 사용은 로그를 출력하고자 하는 코드 안에 Export 합니다. Export 한 객체를 통해 레벨을 호출하여 메시지 혹은 로그를 전송합니다. 아래는 간단한 사용방법입니다.
const logger = require("./logger");
logger.info("hello world");
logger.error("hello world");
logger.warn("hello world");
logger.debug("hello world");
logger.verbose("hello world");
logger.silly("hello world");
'오픈소스 > 노드' 카테고리의 다른 글
[Node] 04. 콜백을 사용한 비동기 제어 흐름 패턴 (0) | 2021.10.06 |
---|---|
[Node] 03. 콜백과 이벤트 (0) | 2021.10.05 |
[Node] INI 라이브러리를 통한 환경설정 파일 구현 - ini Parser - (0) | 2021.10.05 |
[Node] 02. 모듈 시스템 (0) | 2021.09.23 |
[Node] 01. Node.js 플랫폼 (0) | 2021.09.16 |