1

问题

有没有办法从 Cloud Functions 写入结构化日志,以便消息字段自动显示为 GCP 日志查看器中的主要消息?

使用这个测试,我发现有时会使用一个名为message的字段。例如,给定这些日志:

{"severity":"trace","time":"2020-03-09T12:21:13.660044125-07:00","message":"Trace Basic"}
{"severity":"debug","time":"2020-03-09T12:21:13.660047625-07:00","message":"Debug Basic"}
{"severity":"info","time":"2020-03-09T12:21:13.660049425-07:00","message":"Info Basic"}
{"severity":"warn","time":"2020-03-09T12:21:13.660051425-07:00","message":"Warn Basic"}
{"severity":"error","time":"2020-03-09T12:21:13.660053225-07:00","message":"Error Basic"}
{"severity":"info","time":"2020-03-09T12:21:13.660055125-07:00","message":"One line message"}
{"severity":"info","time":"2020-03-09T12:21:13.660057025-07:00","message":"Line 1 of 2\nLine 2 of 2 for zlog.Info"}
{"severity":"info","myIntField":532,"myStringField":"howdy","myMultilineStringField":"Line 1 of 2\nLine 2 of 2 for zlog.Info with fields","time":"2020-03-09T12:21:13.660059925-07:00","message":"With Fields Example"}

GCP 日志查看器将显示如下内容:

谷歌日志控制台

注意最后的条目,它应该有一个带有字段示例的消息,而不是一个顶级消息{ "fields": { ... } }

额外细节

Cloud Run 有一个文档描述了特殊的结构化日志记录字段(即严重性和消息),Stackdriver 日志记录将自动获取并用于填充 Stackdriver 控制台中日志条目的 DEBUG/WARN/INFO/ERROR 图标和顶级消息。

消息中的特殊 JSON 字段

当您将结构化日志作为 JSON 字典提供时,一些特殊字段将从 jsonPayload 中剥离,并写入生成的 LogEntry 中的相应字段,如特殊字段文档中所述。

例如,如果您的 JSON 包含一个严重性属性,它会从 jsonPayload 中删除,并显示为日志条目的严重性。message 属性用作日志条目的主要显示文本(如果存在)。有关特殊属性的更多信息,请阅读下面的日志记录资源部分。

Cloud Functions的相应文档没有关于特殊字段的信息。

4

1 回答 1

0

这是已修复的 Google Cloud Platform 日志记录中的错误。

https://issuetracker.google.com/issues/151316427

于 2021-02-10T18:25:26.973 回答