我可以通过`docker logs`查看旋转文件中的日志吗?

时间:2018-03-06 01:40:14

标签: docker logging

我们可以为docker的json-file日志设置旋转。如果我设置max-file=3max-size=10m,则容器可能有2个旋转文件和1个连接文件。问题是,如果我使用docker logs查看此容器的日志,我可以在2个旋转的文件中看到日志吗?

1 个答案:

答案 0 :(得分:0)

至少对于JSON驱动程序来说似乎如此。

您可以自己测试。让我们构造一个将日志文件拆分为两个的情况:

# docker run --log-driver json-file --log-opt max-size=1k --log-opt max-file=2 --name with_logs ubuntu /bin/bash -c 'echo test ; base64 /dev/urandom | head -c 1000'
# docker logs with_logs

现在您的输出看起来像这样:

test
V9L4+Yud3l4+nyuz/J6PecuXNAcXRxiuWHv+6Lvpa34eDb/ktNTgGHxLLpFuJxmol+BCFoatZEX6
PKyqwOzot6PWnrjBwsA+CWpZUUpUMWh/ab1pF+5AYGU+n0nBudMMxehFVAzAP5PSVZdw0TvtZXGm
Trb5eHbMk1O35UF2fw7Mm8VsHEM5RPWUGO60aKODeRlPSkCogDHbGYtGVHtzyPYcL8wC64SEFTnv
(...)

我们可以看到,test输出仍然存在,即使它应该溢出到记录的文件中也是如此。让我们验证一下确实如此。请注意,max-file设置为1:

# docker run --log-driver json-file --log-opt max-size=1k --log-opt max-file=1 --name without_logs ubuntu /bin/bash -c 'echo test; base64 /dev/urandom | head -c 1000'
# docker logs without_logs
yqdqW+91p2xHO58LTEzqnuwpeQncBshzm6KOutMjQh27m19D5XQ8ffIditEbgNfjc90UmxYHu1t1
arQ+3vYpzWzTSMxmxxOBTOKUKgAC36hVT3JcT+bYF2shLExdKsPA12OJFJj1gmCIF1BWhNVgsE3Z
(...)

我们看到,echo test不再可见,因为日志文件已不存在。

总结:是的,轮换日志在docker日志中可见