记录帆中的响应状态

时间:2015-09-08 14:12:11

标签: node.js logging sails.js

我试图记录对我的sails应用程序发出的每个请求,但我找不到记录与请求相关的响应的方法。

我在config / http.js文件中添加了这个自定义中间件:

myRequestLogger: function (req, res, next) {
  req.on("end", function(){
    sails.log(res.statusCode);
  });
  return next();
}

但是它没有正常工作,我可以获得200个代码,但是不会记录res.forbidden或res.notFound响应。关于我如何处理这个问题的任何想法?

谢谢

2 个答案:

答案 0 :(得分:1)

您可以在api/responses本身中覆盖它。这是简化的覆盖:

// api/responses/forbidden.js
module.exports = function(err, viewOrRedirect) {
  // ... Sails logic
  this.req._sails.log.verbose();
}

但是,如果您希望上面的中间件可以做到这一点,那你就错了。您的中间件应该与此类似:

myRequestLogger: function(req, res, next) {
  req._sails.log.verbose('YOUR LOG');
  return next();
}

答案 1 :(得分:1)

好的,我已经通过阅读此stackoverflow帖子找到了答案:https://stackoverflow.com/a/11841877/2700309

显然有一个'完成'在响应发送到客户端之前发出的事件。所以正确的代码是:

myRequestLogger: function (req, res, next) {
  res.on("finish", function(){
  sails.log(res.statusCode);
 });
 return next();
}

这似乎有效!