我正在运行一个带有 Python 应用程序的 Docker 容器,该应用程序stdout
使用 Python 标准logging
库将日志写入。该容器未托管在任何 Google Cloud 产品中,而是托管在我自己的机器上。
我将 docker 配置为使用本指南和官方驱动程序文档gcplogs
中描述的驱动程序。
docker 容器运行没有问题。但是,没有收集任何日志,因为我在 Stackdriver 日志查看器上看不到任何内容,除了在每次执行 docker 容器时产生的一些奇怪的“ping”日志条目。
python 记录器通过以下方式配置dictConfig
:
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple',
'stream': 'ext://sys.stdout'
},
使用以下命令运行 docker 容器:
docker run --env-file `pwd`/.env \
--label app=oncrm \
--log-driver=gcplogs \
--log-opt gcp-meta-name= host_name\
--log-opt gcp-project=cloud_project_id \
--log-opt labels=app \
--name oncrm \
--net host \
--rm \
-v `pwd`/data:/code/data \
-v `pwd`/logs:/code/logs \
docker_image sh update_subs.sh
驱动程序文档并没有真正指定从哪里收集日志,但它确实提到驱动程序也应该在谷歌云平台/产品之外工作。
环境:
- Python 3.6.4(Alpine3.7 的官方 DockerHub 镜像)
- Docker-ce 18.03.0
- Ubuntu 17.10
- Stackdriver 高级层