我对Javascript和NodeJS比较陌生。
我试着在Express.js中使用摩根。我已经阅读了有关它的文档,这里。有什么方法可以重用预定义的令牌的返回值吗?
从文档中可以看出,您可以使用以下内容:
let express = require('express');
let logger = require('morgan');
let app = express();
app.use(logger(function (tokens, req, res) {
return [
tokens.method(req, res),
tokens.url(req, res),
tokens.status(req, res),
tokens.res(req, res, 'content-length'), '-',
tokens['response-time'](req, res), 'ms'
].join(' ')
}));我们可以使用令牌的值吗?例如,响应时间在另一个函数中的值?
tokens['response-time'](req, res) //Use the value of this in another function我希望能够保存从收到的请求到响应发送回客户端到我的数据库的时间日志。对此是否有任何解决办法/建议?
发布于 2020-04-28 04:28:52
我希望用正确的方法,这不是过时的答案。
你的方法是对的。您只需调用中间件内部的函数,
这里我创建了其他函数.
module.exports = (responseTime) => {
console.log('Hi there, my response time is '+responseTime+' ms')
}还有我的app.js
let express = require('express');
let logger = require('morgan');
let otherFunction = require('./other-function')
let app = express();
app.use(logger(function (tokens, req, res) {
otherFunction(tokens['response-time'](req, res))
return [
tokens.method(req, res),
tokens.url(req, res),
tokens.status(req, res),
tokens.res(req, res, 'content-length'), '-',
tokens['response-time'](req, res), 'ms'
].join(' ')
}));所以输出将如下所示
Hi there, my response time is 4.566 ms
GET / 404 139 - 4.566 ms希望这能有所帮助。
https://stackoverflow.com/questions/57601489
复制相似问题