在sails中logging响应状态

我正在尝试logging对我的sails应用程序所做的每个请求,但是我找不到logging与请求相关联的响应的方法。

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

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

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

谢谢

你可以在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(); } 

好吧,我已经通过阅读这个stackoverflow后find答案: https : //stackoverflow.com/a/11841877/2700309

很明显,在响应发送给客户端之前,会发出一个“完成”事件。 所以正确的代码是:

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

而这似乎工作!