티스토리 뷰
express의 로그를 저장하는 방법에 대해 설명한다.
Express winston morgan 로그 관리 (velog.io)
Express winston morgan 로그 관리
백엔드 개발자라면 반드시 해야하는 로그관리!! Express에서 로그를 관리하는 방법
velog.io
설치방법은 다음과 같다.
$ npm install --save winston winston-daily-rotate-file morgan
Nodejs 환경에서 많이 사용하는 로그 관리 모듈이다
- winston : 로그 파일 및 로그 레벨 관리 모듈
- winston-datily-rotate-file : 매일 날짜 별로 로그 파일 생성 및 관리 모듈 ( 시간이 지나면 자동으로 삭제 & 압축 관리 )
- morgan : request 요청 로깅 미들웨어
const winston = require('winston') ;
const winstonDaily = require('winston-daily-rotate-file');
const { combine, timestamp, printf, colorize } = winston.format;
const logDir = 'logs'; // logs 디렉토리 하위에 로그 파일 저장
const logFormat = printf(info => {
return `${info.timestamp} ${info.level}: ${info.message}`;
});
/*
* Log Level
* error: 0, warn: 1, info: 2, http: 3, verbose: 4, debug: 5, silly: 6
*/
const logger = winston.createLogger({
format: combine(
timestamp({
format: 'YYYY-MM-DD HH:mm:ss',
}),
logFormat,
),
transports: [
// info 레벨 로그를 저장할 파일 설정
new winstonDaily({
level: 'info',
datePattern: 'YYYY-MM-DD',
dirname: logDir,
filename: `%DATE%.log`, // file 이름 날짜로 저장
maxFiles: 30, // 30일치 로그 파일 저장
zippedArchive: true,
}),
// warn 레벨 로그를 저장할 파일 설정
new winstonDaily({
level: 'warn',
datePattern: 'YYYY-MM-DD',
dirname: logDir+ '/warn',
filename: `%DATE%.warn.log`, // file 이름 날짜로 저장
maxFiles: 30, // 30일치 로그 파일 저장
zippedArchive: true,
}),
// error 레벨 로그를 저장할 파일 설정
new winstonDaily({
level: 'error',
datePattern: 'YYYY-MM-DD',
dirname: logDir + '/error', // error.log 파일은 /logs/error 하위에 저장
filename: `%DATE%.error.log`,
maxFiles: 30,
zippedArchive: true,
}),
],
});
logger.stream = {// morgan wiston 설정
write: message => {
logger.info(message);
}
}
// Production 환경이 아닌 경우(dev 등) 배포 환경에서는 최대한 자원을 안잡아 먹는 로그를 출력해야함
if (process.env.NODE_ENV !== 'production') {
logger.add(new winston.transports.Console({
format: combine(
colorize({ all: true }), // console 에 출력할 로그 컬러 설정 적용함
logFormat // log format 적용
)
}));
}
module.exports = logger;
다음과 같이 winston을 이용해 로그의 레벨을 정해준다.
위에는 레벨이 info warn error 가 존재한다.
const logger = require('./logger');
logger.info('info test');
logger.warn('warning test');
logger.error('error test');
위와 같이 입력하면 info warn error 레벨에 대한 로그를 출력할 수있다.
'express' 카테고리의 다른 글
Express 작업 예약 / 반복 작업 (0) | 2023.06.22 |
---|---|
express 비동기 처리 (0) | 2023.06.04 |
aws 지역이동 (0) | 2023.06.04 |
express helmet 적용과 설명 (0) | 2023.06.04 |
express mysql 연동 (0) | 2023.06.04 |