오늘

nodejs - 로그 설정(winston) 본문

nodejs

nodejs - 로그 설정(winston)

jhw715 2023. 3. 9. 00:25

npm을 사용하여 winston 설치

npm install winston winston-daily-rotate-file

 

로그 설정 파일

logDir : 절대경로 or 상대경로 설정 가능

 

아래 설정에 콘솔로그를 제외하고 2개 로그파일이 정의되어 있음.

info 이상의 로그 : WorkingDir/logs 디렉토리에 저장

error 이상의 로그 : WorkingDir/logs/error 디렉토리에 저장

++ WorkingDir/logs 디렉토리에 저장되는 로그파일에도 물론 error 로그 포함됨.

const winston = require('winston');
const winstonDaily = require('winston-daily-rotate-file');

const { combine, timestamp, printf, colorize } = winston.format;
const logDir = 'logs';

const format = combine(
    timestamp({format: 'YYYY-MM-DD HH:mm:ss'}),
    printf(info => {
        return `${info.timestamp} [${info.level}] ${info.message}`;
    }),
);

const transports = [
    new winston.transports.Console({ 
        format: winston.format.combine(
          winston.format.splat(), 
          winston.format.colorize(),)
      }),
      new winstonDaily({
        level: 'info',
        datePattern: 'YYYY-MM-DD',
        zippedArchive: true, 
        filename: `%DATE%.log`,
        dirname: logDir,
        maxFiles: 30,
      }),
      new winstonDaily({
        level: 'error',
        datePattern: 'YYYY-MM-DD',
        zippedArchive: true,
        filename: `%DATE%.error.log`,
        dirname: logDir + '/error',
        maxFiles: 30,
      }),
];

const logger = winston.createLogger({
    format: format,
    transports: transports
});

module.exports = logger

로그 실제 사용

<module name>.log('<log level>', '<log content>' );

const logger = require('../../utils/Logger');
const newsService = require('./service/newsService');

module.exports = {
    sidebarEvent: async (req, res) => {
        logger.log('info',`api-sidebarEvent`);
        const jsonArray = await newsService.getEvents();
        res.send(jsonArray);
    },
.....
}

로그 파일 내용

'nodejs' 카테고리의 다른 글

nodejs express mysql2 사용 예제  (2) 2023.03.14
Comments