[Node.js Daily 로그 남기기]
- 인터넷에서 검색해서 적용해 봤는데 모듈이 업데이트 되면서 약간 바뀌었는지 filename , datePattern 부분이 제대로 적용이 되지 않았음.
- 나머지 부분은 다른게 없고 filename , datePattern 두 부분만 바뀌었음.
var winston = require('winston'); // 로그 처리 모듈
var winstonDaily = require('winston-daily-rotate-file'); // 로그 일별 처리 모듈
// Date Format 선택
// moment 모듈 설치 필요
function timeStampFormat() {
return moment().format('YYYY-MM-DD HH:mm:ss.SSS ZZ'); // '2018-01-01 12:12:12.500 +0900'
};
// 그냥
const tsFormat = () => (new Date()).toLocaleTimeString(); // '2018-01-01'
// 로그 설정
var logger = new (winston.Logger)({
transports: [
new (winstonDaily)({ // 로그 파일 설정
name: 'info-file',
filename: './logs/app_%DATE%.log', // 파일 이름 (아래 설정한 날짜 형식이 %DATE% 위치에 들어간다)
datePattern: 'YYYY-MM-DD', // 날짜 형식 (대문자여야 적용된다.)
colorize: false,
maxsize: 50000000, // 로그 파일 하나의 용량 제한
maxFiles: 1000, // 로그 파일 개수 제한
level: 'info', // info이상 파일 출력 // 로그 레벨 지정
showLevel: true,
json: false,
timestamp: timeStampFormat // 저장될 시간 형식
}),
new (winston.transports.Console)({ // 콘솔 출력
name: 'debug-console',
colorize: true,
level: 'debug', // debug이상 콘솔 출력
showLevel: true,
json: false,
timestamp: timeStampFormat
})
],
exceptionHandlers: [ // uncaughtException 발생시 처리
new (winstonDaily)({
name: 'exception-file',
filename: './logs/exception_%DATE%.log',
datePattern: 'YYYY-MM-DD',
colorize: false,
maxsize: 50000000,
maxFiles: 1000,
level: 'error',
showLevel: true,
json: false,
timestamp: timeStampFormat
}),
new (winston.transports.Console)({
name: 'exception-console',
colorize: true,
level: 'debug',
showLevel: true,
json: false,
timestamp: timeStampFormat
})
]
});
// 원하는 위치에 로그 삽입
...................
logger.info('Hello, World');
...................
* ./logs/ 위치에
app_2018-05-21.log
exception_2018-05-21.log
형식으로 로그 파일이 생성됨
출력 내용은 아래와 같은 형태.
2018-05-21 15:59:38.764 +0900 - info: Hello, World
'Programming > Node.js' 카테고리의 다른 글
[Node.js] express-ipfilter IP필터 모듈 사용하기 (2) | 2018.05.23 |
---|