1. ホーム
  2. logging

[解決済み] dockerコンテナのログを1つのファイルにリダイレクトするには?

2022-05-03 12:03:08

質問

ドッカーコンテナのすべてのログを1つのログファイルにリダイレクトして分析したいのですが、どうすればいいですか?私は試してみました

docker logs container > /tmp/stdout.log 2>/tmp/stderr.log

が、これは2つの異なるファイルにログを出力します。私はすでに

docker logs container > /tmp/stdout.log

が、うまくいきませんでした。

どうすればいいですか?

ログをリダイレクトする必要がない。

Dockerのデフォルトでは、ログは1つのログファイルに保存されます。ログファイルのパスを確認するには、コマンドを実行してください。

docker inspect --format='{{.LogPath}}' containername

/var/lib/docker/containers/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334-json.log

そのログファイルを開いて解析してください。

ログをリダイレクトした場合、リダイレクト前のログしか取得できませんので、ライブログを見ることはできません。

EDITです。

ライブログを見るには、以下のコマンドを実行します。

tail -f `docker inspect --format='{{.LogPath}}' containername`

このログファイル /var/lib/docker/containers/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334-json.log は、docker がログを生成している場合にのみ作成されます。もしログがない場合、このファイルは存在しません。 docker logs containername というメッセージが表示され、何も返ってきません。その場合、このファイルは利用できなくなります。