node.js 에서 log 를 관리하는 여러 모듈이 있는데 그중 범용적으로 많이 쓰이는 winston 과 jsnlog 모듈에 대해 소개한다.
Winston 은 nodejs의 server-side 에서 많이 사용하는 로그모듈이다.
- Multiple transports 라는 개념으로 로그를 레벨별로 다양하게 분리하거나 Console출력, 파일이나 DB에 저장, Remote(Http) 전송등의 기능을 제공한다.
var logger = new (winston.Logger)({ transports: [ new (winston.transports.File)({ name: 'info-file', filename: 'filelog-info.log', level: 'info' }), new (winston.transports.File)({ name: 'error-file', filename: 'filelog-error.log', level: 'error' }) ] });
Jsnlog 는 Client의 로그를 Server에 전달하여 Server에서 Server와 Client의 로그를 모두 관리 할 수 있는 기능을 제공한다.
- C#, PHP, Nodejs 서버와 연동가능
- Client 로그를 AJAX를 이용하로 서버로 전송가능
- Winston의 Transport 모듈과 연동가능
- Server Side(app.js)
-
var winston = require('winston'); var JL = require('jsnlog').JL; var consoleAppender = new (winston.transports.Console)(); var fileAppender = new winston.transports.File({ json: false, filename: 'filelog.log' }); JL().setOptions({ appenders: [ consoleAppender, fileAppender ] });
- Client Side(logger.js)
-
var ajaxAppender = JL.createAjaxAppender('ajaxAppender'); var consoleAppender = JL.createConsoleAppender('consoleAppender'); JL().setOptions({'appenders': [ajaxAppender, consoleAppender]});
- API
- LOG
- log(level: number, logObject: any): Logger
- 일반적인 log API와 다르게 첫번째 인자로 level을 숫자로 넣어주어야 한다.
- Numeric Severities
- From Named SeverityTo Numeric Severity
TRACE 1000 DEBUG 2000 INFO 3000 WARN 4000 ERROR 5000 FATAL 6000
- Logger Option
- Logger의 appenders 등의 옵션을 설정 가능
- jsnlog-nodejs
- Client에서 전송한 로그를 파싱하여 서버에 전송하는 모듈
'Node.js' 카테고리의 다른 글
[Heroku] Deploy 된 Hubot 일정시간뒤에 Sleep 되는 현상 (2) | 2016.01.12 |
---|---|
[Node.js] Ubuntu 에 Node.js 설정하기 (2) | 2016.01.07 |
[Node.js] forever - node.js app 이 죽을경우 자동으로 재실행해주는 모듈 (4) | 2015.02.15 |
[Node.js] supervisor,nodemon - javascript 파일 변경시 node 자동으로 재시작하는 모듈 (0) | 2014.06.07 |
[Node.js] Node.js 프로젝트 Heroku 에 서비스하기 (2) | 2013.05.21 |