リアルタイムでDockerログをファイルに書き込む方法( 'tail -f')

リアルタイムでDockerログをファイルに書き込む方法( 'tail -f')

私のdocker出力ログstdout stderrは、次のコマンドを使用して表示できます。

docker logs -f $LOGS_CONTAINER_ID

また、各行にコンテナIDを入力する「sed」を追加しました。

docker logs -f $LOGS_CONTAINER_ID | sed "s/^/$LOGS_CONTAINER_ID /"

実行すると、次の結果が表示されます。

container112 error 10:20:10 problem
container112 info 10:20:09 not problem
container112 error 10:20:01 problem

ここで、「container112」は $LOGS_CONTAINER_ID です。

今まではそんなに良くなった。これで、上記のコマンドをファイル(log.out)に出力したいので、次のコマンドを作成しました。

docker logs -f $LOGS_CONTAINER_ID | sed "s/^/$LOGS_CONTAINER_ID /" >> log.out

log.outにログを記録しますが、新しいログを取得できない場合が発生します(新しいセッションを開いて実行するとtail -f log.out出力が取得されません)。だから私も次のことを試しました。

tail -f $(docker logs -f $LOGS_CONTAINER_ID | sed "s/^/$LOGS_CONTAINER_ID /") >> log.out

しかし、それも動作しません。問題は何ですか?

答え1

これは役に立ちますか?

docker logs $CONTAINERID 2>&1 | cat > logfile.log

関連情報