You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Morgan以跳过响应时间较短请求的日志记录

解决Morgan根据响应时间跳过日志的问题

Morgan的skip回调执行时机早于内部响应时间的计算,所以没法直接从res对象获取Morgan计算好的响应时间。你可以自己实现响应时间的计算逻辑,来达到需求:

  1. 先添加一个前置中间件,记录请求开始时间
  2. 在skip函数中计算响应时间,再判断是否跳过日志

示例代码:

// 前置中间件:记录请求开始时间
app.use((req, res, next) => {
  req.startTime = Date.now();
  next();
});

// 配置Morgan,自定义skip逻辑
app.use(morgan("common", {
  skip: (req, res) => {
    const responseTime = Date.now() - req.startTime;
    // 逻辑说明:当状态码>400 或 响应时间>200时,不跳过日志(返回false)
    // 其他情况跳过日志(返回true),与你原代码逻辑对应
    return !(res.statusCode > 400 || responseTime > 200);
  }
}));

注意:Morgan的skip函数返回true时会跳过日志记录,所以需要把你原本的判断逻辑反转。

内容的提问来源于stack exchange,提问作者Stephen Rich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 21:42:05