如何将JSON从GCE容器VM登录到Stackdriver?

时间:2018-06-02 08:25:10

标签: json logging google-compute-engine google-cloud-stackdriver

我目前正在使用GCE容器虚拟机(而非GKE)来运行Docker容器,这些容器将其JSON格式化日志写入控制台。日志信息自动收集并存储在Stackdriver中。

问题:Stackdriver将data的{​​{1}} - 字段显示为文本 - 而不是JSON。看起来有效负载内字段的引号是转义的,因此不会被识别为JSON结构。

我使用logback-classic(如解释here)和slf4j / log4j(使用JSONPattern)生成JSON输出(看起来很好),但输出未正确解析。

我认为,我必须在某处配置输出是JSON结构,而不是纯文本。到目前为止,我还没有找到使用Container VM时可以执行此操作的选项。

1 个答案:

答案 0 :(得分:0)

您的记录器将什么输出到标准输出中?

您不应自己在日志输出中创建 jsonPayload 字段。当您的日志被解析并满足特定条件时,该字段会自动创建。

基本上,将您的日志消息写入 JSON 输出的 message 字段,并将任何其他数据作为附加字段写入。 Stackdriver 会从您的 JSON 负载中去除所有特殊字段,如果没有任何内容,那么您的消息将以 textPayload 结束,否则您将收到带有消息和其他字段的 jsonPayload

完整文档在这里: https://cloud.google.com/logging/docs/structured-logging