nanha
7/5/2011 - 12:49 AM

node.js express middleware 중에서 logger를 사용하여 실제 파일로 logging 하는 방법

node.js express middleware 중에서 logger를 사용하여 실제 파일로 logging 하는 방법

/**
 * express 처음에 init 하시면 app.js 를 비롯하여 여러 디렉토리가 생기는데
 * logs 디렉토리에 아무것도 안남는다고 의문을 가지신 분에게 도움이 될거 같습니다.
 * connect의 middleware logger 는 기본이 stdout 으로 출력하고 있었네요.
 * http://senchalabs.github.com/connect/middleware-logger.html
 * manual을 살펴보니 stream options 이 있었군요.
 * 한번 생각나서 fs core module의 createWriteStream 을 사용하여 해봤더니 잘되네요.
 * 다른 방법도 있으신분은 알려주세요
 */
var fs = require('fs'),
    sys = require('sys');

var filename = __dirname + '/logs/hello_log.txt';
var fileStream = fs.createWriteStream(fileName);

// error handler
fileStream.addListener("error", function(err) {
    sys.debug(err);
});

// drain
fileStream.addListener("drain", function() {
    console.log('drain');
});

// Configuration
app.configure(function(){
  // 이 부분입니다. stream property에 stream 설정
  var options = {stream: fileStream};
  app.use(express.logger(options));
  // ....
});