我想记录特定节点应用程序及其所有模块发出的每个 http 请求。将请求包装在一个函数中可以适用于所有非模块代码,缺点显然是它不包含模块代码,而且操作起来很麻烦。
这是针对已经在生产中的应用程序,我想到的唯一其他选择是 tcpdump。
Sly*_*nal 41
设置NODE_DEBUG=http将使节点将详细的HTTP请求信息记录到控制台。
例子:
NODE_DEBUG=http,http2 node index.js
NODE_DEBUG=http,http2 npm start
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息,请参阅:
截至 2023 年 12 月 6 日,这是可用NODE_DEBUG属性的列表(基于上面的博客文章并检查 Nodejs 源代码):
- 子进程
- 簇
- 紧急服务管理
- FS
- http
- https
- http2
- 检查
- 模块
- 网
- 政策
- 重复
- 源映射
- 溪流
- 流套接字
- 测试
- 测试运行者
- 定时器
- tls
- 追踪
- 工人
您可以将多个模块作为逗号分隔列表传递:NODE_DEBUG=http,http2,tls
如何在nodejs源代码中查找模块ID:
不幸的是,nodejs 文档中没有可用的调试模块 ID 的列表。
要在源中查找 ID:搜索/grep Nodejs.js文件以供.debuglog(使用:
# Grep inside the nodejs project
$ grep -r -E --color "\.debuglog\('" nodejs/lib
Run Code Online (Sandbox Code Playgroud)
这将返回如下结果:
let debug = require('internal/util/debuglog').debuglog('esm', (fn) => {
let debug = require('internal/util/debuglog').debuglog('http2', (fn) => {
Run Code Online (Sandbox Code Playgroud)
传递给的字符串.debuglog(...)(例如“esm”和“http2”)是可以传递给的模块ID NODE_DEBUG。
| 归档时间: |
|
| 查看次数: |
16664 次 |
| 最近记录: |