728x90
[나만무] node Logging System
개복치 서버 문제를 해결하기 위해 Logging 시스템 도입..
라이브러리 설치
$ npm install winston
$ npm install winston-daily-rotate-file
$ npm install app-root-path
server/winston/logger.js
import winston from 'winston';
import winstonDaily from 'winston-daily-rotate-file';
const logDir = 'logs'; // logs 디렉토리 하위에 로그 파일 저장
const { combine, timestamp, printf } = winston.format;
// Define log format
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`,
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,
}),
],
});
// Production 환경이 아닌 경우(dev 등)
if (process.env.NODE_ENV !== 'production') {
logger.add(new winston.transports.Console({
format: winston.format.combine(
winston.format.colorize(), // 색깔 넣어서 출력
winston.format.simple(), // `${info.level}: ${info.message} JSON.stringify({ ...rest })` 포맷으로 출력
)
}));
}
export { logger };
server/winston.js (테스트용)
import { logger } from './winston/logger.js';
logger.info("this is info message");
logger.error("this is error message");
이제 이 코드를 이용해 서버가 왜 죽는지를 알아내야 한다!!!
try문에 logger.info("폴더, 함수 이름 성공 ");
catch문에 logger.info("폴더, 함수이름, error msg : ", error)" 해서 어떤 폴더/어떤 함수에서 에러가 나는지 기록해야 한다.
서버가 죽으면, 바로 log 기록 가서 확인. 해당 함수를 고치면 될것같다.
'project > insightLINK' 카테고리의 다른 글
[나만무] Next Auth, google social login 구현 (0) | 2023.06.19 |
---|---|
[나만무] 검색 기능 (0) | 2023.06.19 |
[나만무] Google Social 로그인 (0) | 2023.06.10 |
[나만무] 로그인 - 로그아웃 (0) | 2023.06.09 |