如何获取Node.js可写流的大小(HTTP服务器响应)

时间:2015-02-02 14:49:52

标签: javascript node.js http logging

我想用Common(Access)Log格式编写一个快速中间件打印HTTP访问日志。此格式的最后一列是响应主体的大小(以字节为单位)。

如何确定Node.js服务器生成的HTTP响应的大小?

不起作用的示例:

app.use(function(req, res, next) {
  var bytes = 0;
  res.on('data', function(chunk) {
    bytes += chunk.length;
  });
  res.on('finish', function() {
    // `bytes` is the response size
    console.log(/* common log entry */);
  });
});

我做了一些研究,例如Hapi的common-log总是以-为大小。这是否意味着无法获得尺寸?

1 个答案:

答案 0 :(得分:-1)

试试这段代码:

app.use(function(req, res, next) {
    var data = [];
    res.on('data', function(chunk) {
        data.push(chunk);
    });
    res.on('finish', function() {
        console.log( Buffer.concat(data).toString().length() );
    });
});