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