티스토리 뷰
- 로그 파일 남기기
console 객체의 log() 또는 error() 메소드 등을 호출 하면 로그를 출력 할 수 있다.
양이 많아 진다면 로그를 어떻게 남기고 보관할 것인가? 로그를 남길 수 있도록 외부 모듈을 사용해서 이것을 해결 한다. winston 모듈 로 로그를 남기는 방법을 알아 볼것이다.
- winston 모듈 설치
$ npm install winston --save
$ npm install winston -daily-rotate-file --save
$ npm install moment --save
moment 모듈 = 시간을 다룰 수 있는 모듈
이제 winston 모듈을 사용할 준비를 마쳤습니다.
- 로그 설정
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'); // '2016-05-01 20:14:28.500 +0900'
};
var logger = new (winston.Logger)({
//winston 모듈로 만드는 로거(Logger, 로그를 출력하는 객체를 말할 때 사용하는 용어)는 transports 라는 속성 값으로 여러 개의 설정 정보를 전달 할 수 있다.
transports: [
new (winstonDaily)({
//이름이 info-file인 설정 정보는 매일 새로운 파일에 로그를 기록하도록 설정
name: 'info-file',
filename: './log/server',
datePattern: '_yyyy-MM-dd.log',
colorize: false,
// 50MB를 넘어 가면 자동으로 새로운 파일을 생성되며, 이때 자동으로 분리되어 생성 되는 파일의 개수는 최대 1000개 까지 가능하다.
maxsize: 50000000,
maxFiles: 1000,
//info 수준의 로그만 기록하도록 설정함.
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
})
],
exceptionHandlers: [
new (winstonDaily)({
name: 'exception-file',
filename: './log/exception',
datePattern: '_yyyy-MM-dd.log',
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
})
]
});
+ 파일 복사 예제( 파일을 복사하면서 로그를 남기는 코드)
var fs = require('fs');
var inname = './output.txt';
var outname = './output2.txt';
fs.exists(outname, function (exists) {
if (exists) {
fs.unlink(outname, function (err) {
if (err) throw err;
logger.info('기존 파일 [' + outname +'] 삭제함.');
});
}
var infile = fs.createReadStream(inname, {flags: 'r'} );
var outfile = fs.createWriteStream(outname, {flags: 'w'});
infile.pipe(outfile);
logger.info('파일 복사 [' + inname + '] -> [' + outname + ']');
});
=> log 폴더 생성후 확인 할것
=> logger 객체에 들어 있는 debug(),info(),error() 와 같은 메소드를 호출 한다.
2017-09-18 02:18:11.019 +0900 - info: 파일 복사 [./output.txt] -> [./output2.txt]
2017-09-18 02:18:11.024 +0900 - info: 기존 파일 [./output2.txt] 삭제함.
Program exited with code 0
server_2017-09-17.log 파일이 생성 된것을 알 수 있다 ( log 폴더)
2017-09-18 02:18:11.014 +0900 - info: 파일 복사 [./output.txt] -> [./output2.txt]
2017-09-18 02:18:11.023 +0900 - info: 기존 파일 [./output2.txt] 삭제함.
- 로그 수준이란?
어떤 정보 까지 출력할 것인지를 결정하는것을 말한다.
예) 오류만 보여 줄것인지, 사소한 정보 까지 모두 보여줄 것인지 로그수준 결정.
winston 모듈에서는 사용하는 로그 수준은 다음처럼 단계별로 구성 , 하위 상위 모두 포함
debug: 0 > info : 1 > notice: 2 > warning :3 > error :4 > crit : 5 > alert : 6 > emerg : 7
'Node.js' 카테고리의 다른 글
미들웨어 내용 (0) | 2017.10.08 |
---|---|
[JQuery] 디자인 틀을 JQuery로 쉽게 가져오기 (0) | 2017.09.22 |
[node.js]파일 입출력 / 디렉터리 생성 (0) | 2017.09.18 |
[node.js]이벤트 이해하기 (0) | 2017.09.17 |
[node.js]주소 문자열과 요청 파라미터 다루기 (0) | 2017.09.17 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- BFS
- 학교
- 노드
- C langauge
- Algorigm
- C언어
- 스프링
- 백준
- 개발하는 관광이
- 백준알고리즘
- programming
- 알고리즘
- 텐서플로우
- 프로그래밍
- Android
- 복습
- node
- Controller
- MVC
- Spring
- 감자개발자
- node.js
- TensorFlow
- 초보자를 위한 C언어 300제
- 감자코딩
- 리버싱
- 코드엔진
- db
- 머신러닝
- 안드로이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함