vue项目中接口请求耗时监控和日志打印是封装axios请求层时可顺手实现的基础能力,通过请求/响应拦截器记录时间戳、生成唯一reqid、利用config.meta存储元数据,并结合console.groupcollapsed格式化输出,支持慢请求上报及链路追踪联动。

在 Vue 项目中,接口请求耗时监控和日志打印不是“额外功能”,而是封装请求层时顺手就能加上的基础能力。核心思路是:利用 Axios 拦截器记录时间戳,在请求发出前打起点,响应返回后算差值,并按需输出或上报。
请求开始前记录起始时间
在请求拦截器中,为每个请求生成唯一 ID(如 `Date.now() + Math.random()`),并把当前时间存入 config.meta 字段——这是 Axios 官方支持的自定义元数据容器,不会发到服务端,专为前端逻辑设计。
示例代码:
service.interceptors.request.use(config => {
config.meta = config.meta || {}
config.meta.startTime = Date.now()
config.meta.reqId = `${Date.now()}-${Math.random().toString(36).substr(2, 6)}`
return config
})
响应返回后计算耗时并打印日志
在响应拦截器(含错误响应)中读取 config.meta.startTime,与当前时间做差,得到毫秒级耗时。再结合 URL、状态码、是否成功等信息,统一格式化输出。
建议用 console.groupCollapsed 分组显示,便于折叠查看:
service.interceptors.response.use(
response => {
const { config, status } = response
const duration = Date.now() - (config.meta?.startTime || Date.now())
console.groupCollapsed(`✅ ${config.url} | ${status} | ${duration}ms`)
console.log('Request:', { url: config.url, method: config.method, params: config.params, data: config.data })
console.log('Response:', response.data)
console.groupEnd()
return response
},
error => {
const { config } = error
const duration = Date.now() - (config.meta?.startTime || Date.now())
console.groupCollapsed(`❌ ${config.url} | ${error.code || 'Network'} | ${duration}ms`)
console.warn('Request failed:', { url: config.url, method: config.method })
console.error('Error:', error)
console.groupEnd()
return Promise.reject(error)
}
)
可选:自动上报慢请求或异常请求
仅打印日志还不够,生产环境建议对慢请求(如 >2s)或失败请求做轻量上报。不依赖第三方 SDK,用 navigator.sendBeacon 即可异步发送,不影响页面卸载:
- 判断耗时超阈值(如 2000ms)或响应状态异常(4xx/5xx、网络错误)
- 构造最小日志对象:URL、method、耗时、状态、时间戳、reqId
- 用 sendBeacon 发送到日志收集接口(如
/api/log/perf)
注意:sendBeacon 只支持 POST,且 payload 需为 Blob 或 FormData;简单场景可转成 URLSearchParams 字符串发送。
进阶:与性能监控系统联动
如果项目已接入 Sentry、OpenTelemetry 或自建监控平台,可在拦截器中调用对应 SDK 的事务(Transaction)API:
- 请求拦截器中:创建 Span,设置 operation: 'http.client',标记 URL 和 method
- 响应拦截器中:结束 Span,添加 duration、http.status_code 等属性
- 错误时:捕获异常并 attach 到当前 Span,自动关联上下文
这样请求耗时就不再是孤立数字,而是嵌入完整链路追踪中,便于定位前后端协同瓶颈。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











