인프런 커뮤니티 질문&답변

kee kim님의 프로필 이미지
kee kim

작성한 질문수

Do it! Node.js 프로그래밍(개정판)

05

ch-04-05 강의 winston log 에러

작성

·

350

1

아래와 같이 코드를 작성하였는데 log 디렉토리까지만 생성되고 안에 로그 파일이 남겨지지 가 않습니다. 계속해서 디렉토리가 없다고 에러만 뜨네요 왜 그런지 한번 봐주실수 있나요...?

npm 은 모두 설치 하였습니다

var winston = require(`winston`);
var winstonDaily = require(`winston-daily-rotate-file`);
var moment = require(`moment`);

function timeStampFormat() {
    return moment().format(`YYYY-MM-DD HH:mm:ss.SSS ZZ`);
}

var logger = new (winston.Logger)({
    transports: [
        new (winstonDaily)({
            name:'info-file',
            filename:'./log/server',
            datePattern:'_yyyy-MM-dd.log',
            colorize:false,
            maxsize:50000000,
            maxFiles:1000,
            level:'info',
            showLevel:true,
            json:false,
            timestamp:timeStampFormat
        }),
        new (winston.transports.Console)({
            name:'debug-console',
            colorize:'true',
            level:'debug',
            showLevel:'true',
            json:false,
            timestamp:timeStampFormat 
        })
    ]
});

logger.debug(`디버그 메시지 입니다`);
logger.error(`에러 메시지 입니다`);

답변 1

3

winston이나 winston-daily-rotate-file모두 리뉴얼이 많이 되어서 사용법이 바뀐 것 같습니다. 해당 강의는 작성된지 몇년 되었구요. 따라서 npm으로 사용하는 몇몇 모듈의 경우, 제대로 동작하지 않는 경우, 해당 모듈을 구글에 검색해서 사용법에 대해 읽어보시는 편이 좋을 것 같습니다. 현재 기준으로는 아래와 같이 사용하시면 될것 같습니다.

let logger = winston.createLogger({
    // level: 'info',
    // format: /* winston.format.json(), */ false,
    // defaultMeta: { service: 'user-service' },
    transports: [
        // log file에 저장할 deg message 설정 세팅
        new (winstonDaily)({ // file에 뿌려주는거
            name: 'info-file',
            filename: './log/server_%DATE%.log',
            datePattern: 'yyyy-MM-DD',
            colorize: false,
            maxSize: 50000000,
            maxFiles: 1000,
            level: 'info',
            showLevel: true,
            json: false,
            timeStampFormattimeStampFormat,
        }),
        // console창에 보여줄 deg message 설정 세팅
        new (winston.transports.Console)({ //console에 뿌려주는거
            name: 'debug-console',
            colorize: true,
            level: 'debug',
            showLevel: true,
            json: false,
            timeStampFormattimeStampFormat
        })
    ]
});
kee kim님의 프로필 이미지
kee kim

작성한 질문수

질문하기