之前没有留意过 docker logs
的正确用法,总是直接使用 docker logs -f
来实时跟踪日志,但是每次都要全部显示日志后再跟踪,时间一长日志变多就是灾难,看一下帮助文档,学习下正确用法。
基础命令
1 | $ docker logs --help |
想要跟 tail -f
命令一样从末尾10条以后开始跟踪,需要使用 --tail
参数,默认就是全部
从末尾 10 条后开始跟踪
1 | $ docker logs -f --tail 10 <container-id> |
除了行数限制,还可以根据时间戳来获取指定时间前后的是日志
获取指定时间以后的日志
1 | $ docker logs -t --since="2019-08-20T13:23:37" <container-id> |
获取最后 10 分钟的日志
1 | $ docker logs -t --since=10m <container-id> |
获取指定时间范围的日志
1 | $ docker logs -t --since="2019-08-20T13:23:37" --until="2019-08-21T13:23:37" <container-id> |
使用 grep
如果你使用 grep
会发现根本不起作用,因为 docker logs
命令并没有将日志打印到标准输出,这里我们需要先重定向下。
1 | $ docker logs -f --tail 10 <container-id> 2>&1 | grep 'grep thing' |