在Ubuntu系统中,使用Node.js编写的应用程序通常会使用一些流行的日志库,如Winston、Morgan等。要查看请求响应时间,你需要在日志记录中包含时间戳和请求处理所需的时间。
以下是一个使用Express和Morgan中间件记录请求响应时间的示例:
- 首先,确保你已经安装了Express和Morgan:
npm install express morgan
- 创建一个名为
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日志格式中添加了这个令牌。
- 运行你的应用程序:
node app.js
- 现在,当你访问
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
响应头。