ubuntu

Ubuntu Node.js日志中如何查看请求响应时间

小樊
41
2025-03-26 01:53:32
栏目: 编程语言

在Ubuntu系统中,使用Node.js编写的应用程序通常会使用一些流行的日志库,如Winston、Morgan等。要查看请求响应时间,你需要在日志记录中包含时间戳和请求处理所需的时间。

以下是一个使用Express和Morgan中间件记录请求响应时间的示例:

  1. 首先,确保你已经安装了Express和Morgan:
npm install express morgan
  1. 创建一个名为app.js的文件,并添加以下代码:
const express = require('express');
const morgan = require('morgan');

const app = express();

// 自定义Morgan格式,包括响应时间
morgan.token('response-time', (req, res) => {
  return res.headers['x-response-time'];
});

app.use(morgan(':method :url :status :response-time ms - :res[content-length]'));

app.get('/', (req, res) => {
  res.send('Hello World!');
});

const port = 3000;
app.listen(port, () => {
  console.log(`Server is running at http://localhost:${port}`);
});

在这个示例中,我们自定义了一个名为response-time的Morgan令牌,用于从响应头中获取x-response-time字段。然后,我们在Morgan日志格式中添加了这个令牌。

  1. 运行你的应用程序:
node app.js
  1. 现在,当你访问http://localhost:3000时,你应该能在控制台看到类似以下的日志输出:
GET / 200 1234 56ms - 1345

其中,56ms表示请求响应时间。

请注意,这个示例假设你已经在应用程序中设置了响应头x-response-time。在实际应用中,你可能需要在处理请求之前设置这个响应头,例如:

app.use((req, res, next) => {
  const start = Date.now();
  res.on('finish', () => {
    const duration = Date.now() - start;
    res.setHeader('x-response-time', `${duration}ms`);
  });
  next();
});

这段代码会在每个请求开始时记录当前时间,并在请求完成时计算持续时间,然后将其设置为x-response-time响应头。

0
看了该问题的人还看了