AWS Cloudwatch Node.js 堆栈跟踪打印在单独的日志条目中

AWS Cloudwatch Node.js stack trace printed in separate log entries

目前,当我的 Node.js 应用程序发生错误时,堆栈跟踪中的每一行都打印在单独的日志条目中,如下所示:

我该怎么做才能让单个错误的堆栈跟踪打印在单个日志条目中?

我发现我们可以使用 V8 堆栈跟踪自定义堆栈跟踪格式 API:https://v8.dev/docs/stack-trace-api

因此,我们可以将其重新格式化为 JSON 字符串,而不是打印为 \n 分隔,这样 Cloudwatch 将在单个日志条目中解析它,如下所示:

Error.prepareStackTrace = (err, stack) => JSON.stringify({
  message: err.message,
  stack: stack.map(frame => ({
    file: frame.getFileName(),
    function: frame.getFunctionName(),
    column: frame.getColumnNumber(),
    line: frame.getLineNumber()
  }))
});