【问题标题】:Log response status in sails在sails 中记录响应状态
【发布时间】:2015-12-04 06:33:56
【问题描述】:

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

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

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

但它不能正常工作,我可以得到 200 个代码,但未记录 res.forbidden 或 res.notFound 响应。关于我如何处理的任何想法?

谢谢

【问题讨论】:

  • 我使用了您的确切示例,并且能够记录 403 和 404 错误。请显示您的整个 config/http.js 文件?

标签: node.js logging sails.js


【解决方案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();
}

【讨论】:

  • 我的问题是不记录一些东西,而是在将响应对象发送给客户端之前记录它......虽然我在上面的代码中做了错字,所以我会编辑它。谢谢!
  • 然后尝试覆盖api/responses 中的响应,如上所述。
【解决方案2】:

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

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

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

这似乎有效!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    相关资源
    最近更新 更多