私の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