我希望在sails http.js myRequestLogger自定义中间件中请求路由控制器和操作名称。
答案 0 :(得分:2)
尝试req.options.controller
和req.options.action
答案 1 :(得分:1)
类似于下面的中间件可以记录控制器/操作,中间件必须在router
之前,并在end
请求事件上记录日志。
仅打印控制器/操作,如果定义了一个,如果是静态文件,404等,则可能无法定义。
middleware: {
order: [
...
'logController',
'router',
...
],
logController: function(req, res, next) {
req.on("end", function() {
sails.log.info('logController##Options2:', req.options); // This contains controller/action along with other data
});
sails.log.info('logController##Options1:', req.options); // undefined
next();
},
}
日志:
RequestLogger##Options1: undefined
...
RequestLogger##Options2: { detectedVerb: { verb: '', original: '/', path: '/' },
skipRegex: [],
_middlewareType: 'CORS HOOK: sendHeaders',
controller: 'user',
action: 'list',
locals: { layout: 'layout' } }
请记住,请求可以匹配多个路由,例如
'/user/list': 'UserController.list',
'user/:id': 'UserController.detail',
控制器可以调用其第三个参数next
来移动到下一个匹配的控制器/动作。