首页 > 解决方案 > Amazon Cloudwatch JSON 格式不正确

问题描述

我在我的 Alexa 技能的 Lambda 函数中记录亚马逊技能请求和回复。这些是我正在记录的 JSON 对象,如下所示:

logger.debug('Incoming request:\n' + JSON.stringify(event, null, 2));

logger.debug('Final response:\n' + JSON.stringify(alexaResponse, null, 2) + '\n\n');

在使用 Expand all = Row 查看 Cloudwatch 中的日志时,我看到:

Cloudwatch 日志,将全部展开设置为行

我设置Expand all为Text的时候效果稍微好一些,但是前导空格被剪掉了,导致JSON文档的缩进结构丢失了。

Cloudwatch 日志,将全部展开设置为文本

我从教程中得到了这段代码。Amazon Cloudwatch 中的更改可能导致本教程中的代码现在失败。

在本教程中,输出如下所示:

教程截图

这就是我想要的日志输出。我如何得到它?

标签: aws-lambda

解决方案


我的 cloudwatch 日志会根据需要自动显示 JSON 字符串,而无需使用 JSON.stringify() 的可选第二个和第三个参数

因此,请尝试从日志语句的 JSON.stringify 中删除 null 和 2。

logger.debug('Incoming request: \n' + JSON.stringify(event));

logger.debug('Final response: \n '+ JSON.stringify(alexaResponse));

我不在我的电脑上进行测试,但我认为新行 (\n) 应该在 cloudwatch 中为您提供所需的效果,将 json 放在您可以扩展的自己的行中。它是让 cloudwatch 在 JSON 中设置新行的额外空白。


推荐阅读