如何将 Docker 日志实时写入文件(à `tail -f`)

如何将 Docker 日志实时写入文件(à `tail -f`)

我 docker 输出日志 stdout stderr,可以使用以下命令查看:

docker logs -f $LOGS_CONTAINER_ID

我还添加了“sed”,它将容器 ID 放在每一行上:

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

相关内容