stdout
Python 標準ライブラリを使用してログを書き込む Python アプリケーションで Docker コンテナを実行していますlogging
。コンテナは Google Cloud プロダクトではなく、自分のマシンでホストされています。
このガイドと公式のドライバー ドキュメントgcplogs
で説明されているように、ドライバーを使用するように docker を構成しました。
docker コンテナーは問題なく実行されます。ただし、Docker コンテナの実行ごとに生成されるいくつかの奇妙な「ping」ログ エントリ以外は、Stackdriver ログ ビューアに何も表示されないため、ログは収集されません。
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
ドライバーのドキュメントでは、ログがどこから収集されるかは実際には指定されていませんが、ドライバーは Google クラウド プラットフォーム/製品の外部でも動作する必要があると記載されています。
環境:
- Python 3.6.4 (Alpine3.7 の公式 DockerHub イメージ)
- Docker-ce 18.03.0
- Ubuntu 17.10
- Stackdriver プレミアム ティア