添加一个钩子来全局记录node.js/express中的所有节点HTTP响应

2023-11-27

我使用 Node.js 和 Express 来处理 HTTP 请求和响应。通过使用http.ServerRequest事件,我可以添加一个挂钩并记录 HTTP 请求。好像没有类似的活动http.ServerResponse我想知道如何使用我的服务器发送的一段代码来记录所有 HTTP 响应?


出于类似的需求,我创建了一个包来完成这样的事情。查看快速请求记录器

程序的核心是这样的,它包含一些额外的代码,因此您可以拥有自己的按请求记录的数据键值映射:

// Save the real end that we will wrap
var rEnd = res.end;

// To track response time
req._rlStartTime = new Date();

// Proxy the real end function
res.end = function(chunk, encoding) {
  // Do the work expected
  res.end = rEnd;
  res.end(chunk, encoding);

  // And do the work we want now (logging!)

  // Save a few more variables that we can only get at the end
  req.kvLog.status = res.statusCode;
  req.kvLog.response_time = (new Date() - req._rlStartTime);

  // Send the log off to winston
  var level = req.kvLog._rlLevel;
  delete req.kvLog._rlLevel;
  logger.log(level, '', req.kvLog);
};

上面的代码在express中作为中间件运行。查看代码,如果您还有其他问题,请在此处或 github 上与我联系。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加一个钩子来全局记录node.js/express中的所有节点HTTP响应 的相关文章

随机推荐

  • 当没有任何变化时如何强制更新 MySQL 记录

    我的数据库表有一列定义要使用ON UPDATE CURRENT TIMESTAMP 字段 last access 类型 时间戳 整理 属性 更新 CURRENT TIMESTAMP Null No 默认值 CURRENT TIMESTAMP
  • 如何使用 Python Mock 引发异常 - 但将 Errno 设置为给定值

    给定以下 Python 代码 elif request method DELETE try os remove full file return jsonify results purged s full file except OSErr
  • ES6 对象字面量中的简洁方法和非简洁方法

    let module add function a b return parseInt a parseInt b sub a b return parseInt a parseInt b 使用这两种方法的根本区别是什么concise方法语法
  • 使用 Ruby gem 部署 shell 脚本并安装在 bin 目录中

    我希望将 shell 脚本与属于该包的其他 Ruby 程序一起放置在我的 gem 的 bin 目录中 我希望将此 shell 脚本按原样安装在 bin 目录中 即没有包装器 红宝石有可能做到这一点吗 如果没有其他可能的话 我会对安装后挂钩感
  • 有没有办法将EntityManager注入到服务中

    使用时Symfony 3 3 我声明这样的服务 class TheService implements ContainerAwareInterface use ContainerAwareTrait 在我需要 EntityManager 的
  • Spring Batch corePoolSize VSthrottle-limit

    我想知道两者之间的区别核心池大小 and 油门限制作为定义多线程配置的 Spring Batch 属性 感谢这篇文章 我了解了 corePoolSize 和 maxPoolSize 之间的区别 Spring ThreadPoolTask E
  • RMI 的替代方案

    我有一个小型 Java SE 应用程序 它实际上是一个位于数据库之上的胖客户端 为了进一步提高我的 Java 技能 我决定用它制作一个客户端 服务器应用程序 服务器应用程序与数据库通信并处理各种冗长的操作 而客户端应用程序仅接收结果 主要是
  • 如何在 OCaml 中使用断言?

    我正在尝试学习 OCaml 但在断言语句方面遇到了问题 在解释器中我可以使用它 Zameers MacBook Air zmanji ocaml OCaml version 4 01 0 let x 1 val x int 1 assert
  • 选中时更改标签颜色单选

    我在检查单选按钮后如何将单选按钮的标签文本颜色更改为蓝色时遇到问题 我已经遵循了许多示例代码 但它不起作用 下面是我的html代码 div class input group div
  • 如何在Java中设置JButton的背景颜色?

    我正在开发一个 Java 桌面应用程序 里面我有4个JButtons on a JPanel 现在我希望每当单击一个按钮时 其背景颜色就会更改为其他颜色 例如橙色 以表示它已被单击 并且所有其他 3 个按钮的背景颜色重置为默认颜色 如果其中
  • NoClassDefFoundError:org/hibernate/annotations/common/reflection/MetadataProvider

    我在 pom xml 中定义了依赖项
  • 当其他用户执行Google Web App时,如何查看它的日志记录?

    我使用以下选项部署了我的 Google App Script Webappexecute the app as User accessing the web app 在应用程序脚本仪表板中 我可以看到 Web 应用程序的执行情况和日志记录
  • 为 swig 生成的包装 C++ 的 C# 生成 doxygen 注释

    我有一个用 C 编写的项目 我也使用 swig 生成一些 C 包装器 C 代码使用 Doxygen 样式注释来注释类和函数 是否可以让 Swig 获取这些 doxygen 注释并为 C 包装器类和函数生成 doxygen 注释 目前 SWI
  • python从url保存图像

    当我使用 python 通过 urllib2 请求或 urllib urlretrieve 从 url 保存图像时遇到问题 也就是说该图片的 url 是有效的 我可以使用资源管理器手动下载它 但是 当我使用python下载图像时 该文件无法
  • pandas df 的流数据

    我正在尝试模拟使用 pandas 来访问不断变化的文件 我有一个文件读取 csv 文件 向其中添加一行 然后随机休眠一段时间以模拟批量输入 import pandas as pd from time import sleep import
  • BigQuery:如何将其中一列的类型从 INTEGER 更改为 STRING?

    在 BigQuery 中 假设我有一个包含 X 个字段的现有表 字段 1 当前是整数 但我想将其更改为字符串 我需要保留当前位于字段 1 中的数据 同时能够将字符串数据插入该字段 我认为目前在 Google BigQuery 中不可能修改列
  • Google Drive API 按名称查询返回无效

    根据 Google Drive 文档 要按名称查询文件 您可以使用 q name file name https developers google com drive v3 web search parameters 当我尝试在这里按名称
  • 图表js工具提示如何控制显示的数据

    我正在使用 Chart js 插件并使用按条形视图分组图表 当我将鼠标悬停在一组条形图上时 我可以看到一个工具提示 其中显示了这些条形图的数据 但当我将鼠标悬停在条形数据上时 我如何更改工具提示以显示我唯一的单个数据 我如何显示不同的数据信
  • ASP.NET MVC 3结构-去另一个项目中查看

    我有以下项目设置 项目A 主要 商业 Data 查看 asp net mvc 3 项目 N项目 商业 Data 查看 asp net mvc 3 项目 我如何从项目 A 调用项目 N 中的视图 并从 N 调用回 A 本质上 我想要做的是将每
  • 添加一个钩子来全局记录node.js/express中的所有节点HTTP响应

    我使用 Node js 和 Express 来处理 HTTP 请求和响应 通过使用http ServerRequest事件 我可以添加一个挂钩并记录 HTTP 请求 好像没有类似的活动http ServerResponse我想知道如何使用我