728x90
1. 설치
winston과 winston-daily-rotate-file을 설치한다. winston은 로그를 남기는 본체이고, winston-daily-rotate-file은 1일 단위로 로그를 쌓도록 관리해준다.
npm install --save winston winston-daily-rotate-file
2. winston.js 작성
로그를 관리하는 모듈을 따로 패키지 형태로 작성한다.
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
})
]
});
3. 원하는 위치에 로그를 삽입한다.
logger.info('Hello, World');
4. 출력 내용 확인
* ./logs/ 위치에
app_2018-05-21.log
exception_2018-05-21.log
형식으로 로그 파일이 생성됨
출력 내용은 아래와 같은 형태.
2018-05-21 15:59:38.764 +0900 - info: Hello, World
[출처]
728x90
'JavaScript > Node.js' 카테고리의 다른 글
Node.js에서 Python 함수 호출하기 - spawn() (0) | 2023.05.03 |
---|---|
url 모듈 (0) | 2023.04.22 |
자식 프로세스(child_process) (0) | 2023.02.07 |
Node.js 기초와 모듈(내장 모듈, npm, 사용자정의 모듈) (0) | 2023.02.04 |
사용자 정의 모듈 (0) | 2023.02.04 |