firebase中的JSON日志似乎已转义



在firebase中,我试图以人类可读的格式记录一些JSON对象,但当字符串化时,它要么打印为[object],要么escaped。没有中间立场。它以相同的方式显示在日志面板上。例如

const data = {
event: 'my-event',
value: 'foo-bar-baz',
};
functions.logger.log(`data = ${data}`);
functions.logger.log(`dataStringified = ${JSON.stringify(data)}`);

打印为

>  {"severity":"INFO","message":"data = [object Object]"}
>  {"severity":"INFO","message":"data2 = {"event":"my-event","value":"foo-bar-baz"}"}

我做错了什么?

您没有做错任何事情,消息对象负载是一个"data2 = {"event":"my-event","value":"foo-bar-baz"}"字符串,因此为了显示默认状态下的键值对(使用双引号(,实际消息中的双引号需要转义,否则,消息值将通过显示另一个双引号符号提前终止,您将得到如下输出:"data2 = {"。你可以做的是用单引号取代字符串化给你的双引号,使其更具人类可读性。应该这样做:

functions.logger.log(`dataStringified = ${JSON.stringify(data).replaceAll('"',"'")}`);

我使用我的模拟器在本地运行了这个程序,并收到了以下输出:

{
"severity": "INFO",
"message": "dataStringified = {'event':'my-event','value':'foo-bar-baz'}"
}

最新更新