Node.js Morgan中间件响应时间Token与Postman显示不一致问题咨询
解决Morgan中间件响应时间与Postman显示差异的问题
Morgan的response-time token默认返回的是秒为单位的数值,你看到的0.1秒正好对应Postman显示的100毫秒,两者本质是同一个时长,只是单位不同而已。
要让日志里的响应时间和Postman显示的单位一致(毫秒),只需要把获取到的数值乘以1000即可:
const morganMiddleware = morgan( (tokens, req, res) => JSON.stringify({ method: tokens.method(req, res), url: tokens.url(req, res), status: Number.parseFloat(tokens.status(req, res)), content_length: tokens.res(req, res, 'content-length'), // 乘以1000将秒转换为毫秒 response_time: Number.parseFloat(tokens['response-time'](req, res)) * 1000, }), { stream: { write: (message) => { const data = JSON.parse(message); logger.http('incoming-request', data); }, }, }, );
补充说明
- Morgan的
response-timetoken内部计算的是从请求接收到响应发送完成的时长,默认以秒为单位返回浮点数 - Postman默认以毫秒为单位展示响应时间,因此两者数值存在1000倍的换算关系
内容的提问来源于stack exchange,提问作者Atharva Deshpande
相关产品推荐
相关产品推荐

