我目前正在使用GCE容器虚拟机(而非GKE)来运行Docker容器,这些容器将其JSON格式化日志写入控制台。日志信息自动收集并存储在Stackdriver中。
问题:Stackdriver将data
的{{1}} - 字段显示为文本 - 而不是JSON。看起来有效负载内字段的引号是转义的,因此不会被识别为JSON结构。
我使用logback-classic(如解释here)和slf4j / log4j(使用JSONPattern)生成JSON输出(看起来很好),但输出未正确解析。
我认为,我必须在某处配置输出是JSON结构,而不是纯文本。到目前为止,我还没有找到使用Container VM时可以执行此操作的选项。
答案 0 :(得分:0)
您的记录器将什么输出到标准输出中?
您不应自己在日志输出中创建 jsonPayload
字段。当您的日志被解析并满足特定条件时,该字段会自动创建。
基本上,将您的日志消息写入 JSON 输出的 message
字段,并将任何其他数据作为附加字段写入。 Stackdriver 会从您的 JSON 负载中去除所有特殊字段,如果没有任何内容,那么您的消息将以 textPayload
结束,否则您将收到带有消息和其他字段的 jsonPayload
。
完整文档在这里: https://cloud.google.com/logging/docs/structured-logging