首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在其他变量或函数中使用Morgan记录器令牌的值?

如何在其他变量或函数中使用Morgan记录器令牌的值?
EN

Stack Overflow用户
提问于 2019-08-22 02:59:45
回答 1查看 1.2K关注 0票数 2

我对Javascript和NodeJS比较陌生。

我试着在Express.js中使用摩根。我已经阅读了有关它的文档,这里。有什么方法可以重用预定义的令牌的返回值吗?

从文档中可以看出,您可以使用以下内容:

代码语言:javascript
复制
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(' ')
}));

我们可以使用令牌的值吗?例如,响应时间在另一个函数中的值?

代码语言:javascript
复制
tokens['response-time'](req, res) //Use the value of this in another function

我希望能够保存从收到的请求到响应发送回客户端到我的数据库的时间日志。对此是否有任何解决办法/建议?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-28 04:28:52

我希望用正确的方法,这不是过时的答案。

你的方法是对的。您只需调用中间件内部的函数,

这里我创建了其他函数.

代码语言:javascript
复制
module.exports = (responseTime) => {
    console.log('Hi there, my response time is '+responseTime+' ms')
}

还有我的app.js

代码语言:javascript
复制
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(' ')
}));

所以输出将如下所示

代码语言:javascript
复制
Hi there, my response time is 4.566 ms
GET / 404 139 - 4.566 ms

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57601489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档