![如何将 Docker 日志实时写入文件(à `tail -f`)](https://linux22.com/image/149215/%E5%A6%82%E4%BD%95%E5%B0%86%20Docker%20%E6%97%A5%E5%BF%97%E5%AE%9E%E6%97%B6%E5%86%99%E5%85%A5%E6%96%87%E4%BB%B6%EF%BC%88%C3%A0%20%60tail%20-f%60%EF%BC%89.png)
我 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