http.ServerResponse のフックでログを吐かせる
res.end(...) 書く度に log.write(...) したくない。
というか、自動的にやってほしい。
var path = require('path') , fs = require('fs') , http = require('http') , moment = require('moment') ; function createSimpleLog (ws, display) { ws = ((ws || {}).writable) ? ws : process.stdout; return function (req, res) { var end = res.end; res.end = function () { //this.constructor.prototype.end.apply(this, arguments); end.apply(this, arguments); var now = moment().format("MM/DD/YYYY HH:mm:ss +0900"); var logMessage = [ now , req.method.toUpperCase() , req.url , res.statusCode ].join(' '); ws.write(logMessage + "\n"); if (display) console.log(logMessage); }; }; } var log = createSimpleLog( fs.createWriteStream(path.join(__dirname, 'access.log')) , true); http.createServer(function (req, res) { log(req, res); res.writeHead(200); res.end(req.url); }).listen(3000);