Docker日志驱动程序gcplogs:如何格式化日志,以便它们在Stackdriver中正确显示?

L42*_*L42 9 google-cloud-platform stackdriver google-cloud-stackdriver

tldr:
- 我正在写一个运行在Google Cloud之外的python应用程序的日志
- 我正在使用gcplogs将日志导入到Stackdriver - 导入的日志
必须是错误的格式,因为它们不会在Stackdriver日志记录中显示

我很难搞清楚如何配置gcplogs Docker日志驱动程序,以便在Stackdriver日志记录中显示日志.这是日志目前的样子: 在此输入图像描述

看起来stackdriver没有正确解析这些日志.但是,如果在GKE中运行docker镜像,则日志看起来正确:

在此输入图像描述

这里Stackdriver已经认识到这些日志是调试消息.

由于这两个应用程序使用相同的记录器,我认为从应用程序记录的消息格式正确,并且必须是错误或缺少某些内容的gcplogs配置.(有关python代码的信息,请参阅此存储库:https://github.com/cognitedata/python-logs-export-docker-gcplogs-test)

这是/etc/docker/daemon.json运行Docker镜像的机器上的内容:

{
  "log-driver": "gcplogs",
  "log-opts": {
    "gcp-project": "removed",
    "env": "host"
  }
}
Run Code Online (Sandbox Code Playgroud)

输出docker info | grep 'Logging Driver'Logging Driver: gcplogs.

输出docker version是:

Client:
 Version:       18.03.0-ce
 API version:   1.37
 Go version:    go1.9.2
 Git commit:    0520e24
 Built: Wed Mar 21 23:05:52 2018
 OS/Arch:       linux/amd64
 Experimental:  false
 Orchestrator:  swarm

Server:
 Engine:
  Version:      18.03.0-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.4
  Git commit:   0520e24
  Built:        Wed Mar 21 23:14:54 2018
  OS/Arch:      linux/amd64
  Experimental: false
Run Code Online (Sandbox Code Playgroud)

任何关于如何配置这个以便日志最终在Stackdriver中看起来的提示将非常感激.