Node.js日志中如何分析API响应时间
在Node.js开发中,通过Express中间件监听请求的finish事件,记录开始与结束时间戳,计算并输出每个API接口的响应耗时,便于性能分析与问题排查,帮助快速定位接口瓶颈与优化方向。
在Node.js开发中,API响应时间往往是衡量服务性能的关键指标。如果能直接在日志里看到每个接口的耗时,排查问题、做性能优化会轻松很多。那具体怎么做呢?其实用Express框架的中间件机制就能很简单地实现。

先确保已经安装了Express,如果还没装,老规矩:
npm install express
然后创建一个 app.js 文件,引入Express模块:
const express = require('express');
const app = express();
核心思路是写一个自定义中间件,它在每个请求开始时记录时间戳,等请求完成时再计算耗时。注意,这里要监听响应的 finish 事件,而不是在中间件里直接同步计算——因为后面可能还有其他异步操作(比如数据查询、文件读写)。代码看起来像这样:
app.use((req, res, next) => {
const start = Date.now();
res.on('finish', () => {
const duration = Date.now() - start;
console.log(`${req.method} ${req.originalUrl} - ${duration}ms`);
});
next();
});
有了这个中间件后,随便定义几个API路由来测试效果。比如两个接口,分别模拟耗时1秒和2秒:
app.get('/api/test1', (req, res) => {
setTimeout(() => {
res.json({ message: 'Test API 1' });
}, 1000);
});
app.get('/api/test2', (req, res) => {
setTimeout(() => {
res.json({ message: 'Test API 2' });
}, 2000);
});
最后启动服务,监听端口:
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
当你访问 /api/test1 和 /api/test2 时,控制台就会输出类似这样的日志:
GET /api/test1 - 1002ms
GET /api/test2 - 2001ms
是不是很简单?当然,这只是最基础的用法。实际项目中,你可能需要把响应时间记录到日志文件、数据库,或者接入监控系统做进一步分析。比如用 fs 模块写入文件,或者配合 winston 之类的日志库做更细粒度的管理——这些都留给各位按需扩展了。
AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。
AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。
AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。
StarUML 7 Windows版是一款面向软件工程、系统分析与架构设计的专业建模工具,支持UML 2、ERD、流程图、数据流图和C4模型等,可用于需求梳理、系统设计、模型验证、文档发布及代码生成。
Fender Studio Pro(原Studio One)Windows版是一套专业数字音频工作站,可完成录音、编曲、混音、母带处理与现场演出。 新版本延续Studio One的核心工作流,并加入Fender音箱与效果建模、智能创作和更现代的制作界面。
think-cell Windows版是一款集成于Microsoft PowerPoint和Excel的商业演示增强插件,提供瀑布图、甘特图、Mekko图、数据联动、自动标注及智能排版功能,适合咨询、金融、项目管理和企业汇报场景。






