Skip to content

report

提供 JSON 格式的诊断摘要,写入文件。

该报告旨在供开发、测试和生产使用,以捕获和保存信息以用于问题确定。它包括 JavaScript 和原生堆栈跟踪、堆统计信息、平台信息、资源使用情况等。启用报告选项后,除了通过 API 调用以编程方式触发之外,还可以针对未处理的异常、致命错误和用户信号触发诊断报告。

下面提供了针对未捕获异常生成的完整示例报告以供参考。

使用方法

bash
node --report-uncaught-exception --report-on-signal \
--report-on-fatalerror app.js
  • --report-uncaught-exception 允许生成关于未捕获异常的报告。当结合原生堆栈和其他运行时环境数据检查 JavaScript 堆栈时很有用
  • --report-on-signal 在接收到正在运行的 Node.js 进程的指定(或预定义)信号时生成报告。(请参阅下文了解如何修改触发报告的信号。)默认信号为 SIGUSR2。当需要从另一个程序触发报告时很有用。应用监视器可以利用此特性定期收集报告并将丰富的内部运行时数据集绘制到其视图中。 Windows 不支持基于信号的报告生成。

一般情况下,不需要修改上报触发信号。然而,如果 SIGUSR2 已经被用于其他目的,则此标志有助于改变报告生成的信号,并为上述目的保留 SIGUSR2 的原始含义。

  • --report-on-fatalerror 允许在导致应用终止的致命错误(Node.js 运行时内的内部错误,例如内存不足)时触发报告。有助于检查各种诊断数据元素,如堆、堆栈、事件循环状态、资源消耗等,以推断致命错误。
  • --report-compact 以紧凑的单行 JSON 格式编写报告,与专为人类使用而设计的默认多行格式相比,日志处理系统更易于使用。
  • --report-directory 生成报告的位置。
  • --report-filename 将写入报告的文件的名称。
  • --report-signal 设置或重置报告生成信号(Windows 不支持)。默认信号为 SIGUSR2。
  • --report-exclude-network 从诊断报告中排除 header.networkInterfaces。默认情况下,未设置此项,并且包括网络接口

报告也可以通过 JavaScript 应用的 API 调用触发:

js
process.report.writeReport();

此函数接受可选的额外参数 filename,其是写入报告的文件的名称。

js
process.report.writeReport('./foo.json');

Released under the MIT License.