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
- Logger Name
- Log Level 지정가능
- LOG
- log(level: number, logObject: any): Logger
- 일반적인 log API와 다르게 첫번째 인자로 level을 숫자로 넣어주어야 한다.
- Numeric Severities
TRACE | 1000 |
DEBUG | 2000 |
INFO | 3000 |
WARN | 4000 |
ERROR | 5000 |
FATAL | 6000 |