Sails.js:将控制器名称和功能添加到日志条目
Sails.js: Add Controller name and function to log entry
我正在自定义 sails.js v0.12.3 中的 morgan 登录,我能够通过基于请求对象的属性引入新的 morgan 令牌来丰富日志条目 - 很好。
具体来说,我们要记录控制器及其调用的函数。
目标日志条目为:
UserController - find - GET /api/v1/users 200 125.952 ms - -
目前我们有一个单独的日志语句,由Controller函数直接写入。但是在某些负载下,它们不会紧接着出现。所以我们希望将这些信息集中在一个日志条目中。
我的初步尝试:
当我记录 req.options.controller 时,它总是输出 'session'。我想那是因为我在 http.js 中的中间件顺序。
order: [
'startRequestTimer',
'cachePreflights',
'morgan',
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'router',
'www',
'favicon',
'404',
'500'
],
但是在 router
之后放置 morgan
导致根本没有摩根输出。
你有什么想法让这成为可能吗?
据我了解,
- 控制器由
router
决定并调用。
因此,控制器在 router
启动之前是 'session'(或通用/未定义的东西)。
- 在非 404、非 500 请求的情况下,
router
返回响应。
因此,中间件 (morgan
) 不会被触发,如果它在 router
. 之后
在响应准备好之前,响应时间也是未知的。
解决方案
在 order
中保留 router
之前的中间件。
使用请求的 end
事件打印日志。
logRequestDetails: function(req, res, next) {
req.on("end", function() {
sails.log.verbose('Request', req.options.controller, req.options.action);
});
},
我正在自定义 sails.js v0.12.3 中的 morgan 登录,我能够通过基于请求对象的属性引入新的 morgan 令牌来丰富日志条目 - 很好。
具体来说,我们要记录控制器及其调用的函数。
目标日志条目为:
UserController - find - GET /api/v1/users 200 125.952 ms - -
目前我们有一个单独的日志语句,由Controller函数直接写入。但是在某些负载下,它们不会紧接着出现。所以我们希望将这些信息集中在一个日志条目中。
我的初步尝试:
当我记录 req.options.controller 时,它总是输出 'session'。我想那是因为我在 http.js 中的中间件顺序。
order: [
'startRequestTimer',
'cachePreflights',
'morgan',
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'router',
'www',
'favicon',
'404',
'500'
],
但是在 router
之后放置 morgan
导致根本没有摩根输出。
你有什么想法让这成为可能吗?
据我了解,
- 控制器由
router
决定并调用。
因此,控制器在router
启动之前是 'session'(或通用/未定义的东西)。 - 在非 404、非 500 请求的情况下,
router
返回响应。
因此,中间件 (morgan
) 不会被触发,如果它在router
. 之后
在响应准备好之前,响应时间也是未知的。
解决方案
在 order
中保留 router
之前的中间件。
使用请求的 end
事件打印日志。
logRequestDetails: function(req, res, next) {
req.on("end", function() {
sails.log.verbose('Request', req.options.controller, req.options.action);
});
},