
Winston
npm install winston winston-daily-rotate-file --save
winston.js 생성
/**
* winston@3.x
* reference site: https://thisdavej.com/using-winston-a-versatile-logging-library-for-node-js/
*/
const { createLogger, format, transports } = require("winston");
require("winston-daily-rotate-file");
const fs = require("fs");
const { addColors } = require("winston/lib/winston/config");
//const env = process.env.NODE_ENV || "production"; // production
const logDir = __dirname + "/logs";
//console.log("logDir : ", logDir);
// Create the log directory if it does not exist
if(!fs.existsSync(logDir)) {
fs.mkdirSync(logDir);
}
const dailyRotateFileTransport = new transports.DailyRotateFile({
level: "info",
filename: `${logDir}/%DATE%_exception.log`,
datePattern: "YYYY-MM-DD",
//zippedArchive: true,
maxSize: "5m",
maxFiles: "30d" // 로그 파일 30일간 보관
});
const logger = createLogger({
//level: env === "development" ? "debug" : "info",
format: format.combine(
format.timestamp({
format: "YYYY-MM-DD HH:mm:ss"
}),
format.printf(
info => `${info.timestamp} ${info.message}` // ${info.level}
),
format.json(),
),
transports: [
dailyRotateFileTransport,
]
});
module.exports = logger;
/exampleLogger 로 접속할 경우
"use strict";
const logger = require("../winston");
const exampleLogger = function(request, response) {
logger.info('Hello Winston info!');
logger.debug('Hello Winston debug!');
logger.warn('Hello Winston warn!');
logger.info('Hello again distributed logs');
logger.error('error1');
logger.error('error2');
}
module.exports = exampleLogger;

날짜별 로그파일 생성
Logging Level
const levels = {
error: 0,
warn: 1,
info: 2,
http: 3,
verbose: 4,
debug: 5,
silly: 6
};
위험레벨별 로그지원
깃허브 공식사이트
'Programing > node js' 카테고리의 다른 글
| node js request response 요청 응답 객체 (0) | 2021.01.06 |
|---|---|
| node js Express Router 관리, 분리 (0) | 2021.01.06 |
| node js express-generator 설치 (0) | 2021.01.05 |
| node js express 구축 (0) | 2021.01.04 |
| node js 설치 (0) | 2021.01.04 |