在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(); }
而这似乎工作!