我试图记录对我的sails应用程序发出的每个请求,但我找不到记录与请求相关的响应的方法。
我在config / http.js文件中添加了这个自定义中间件:
myRequestLogger: function (req, res, next) {
req.on("end", function(){
sails.log(res.statusCode);
});
return next();
}
但是它没有正常工作,我可以获得200个代码,但是不会记录res.forbidden或res.notFound响应。关于我如何处理这个问题的任何想法?
谢谢
答案 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();
}
这似乎有效!