前言
原来在没用Docker部署服务的时候,习惯在Linux上直接查找日志的方式,以及各种过滤指令。切换到Docker以后,一开始有些不顺手,特此整理了一些在生产上排查日志问题常用的命令,争取拿来即用。
常用命令
查询所有日志
直接使用 docker logs 容器ID即可查询
根据关键字过滤
docker logs 容器ID |grep "关键字"
有时候我们往往需要关键字的上下文信息,只用过滤就又些不满足了,查上下的内容,比如前十行、后十行、前后各十行。直接试用linux的语法
在Linux中查询关键字的前几行、后几行、以及前后几行的语法分别是
- cat all.log |grep "key" -A 10 A表示After 关键字之后的几行
- cat all.log |grep "key" -B 10 B表示Before 关键字之前的几行
- cat all.log |grep "key" -C 10 C表示Context 表示关键字上下文信息 即前后几行
下面用测试环境部署项目时定位日志问题作为效果演示
全集
可以看出只有一些关键字的信息
查找关键字的后10行
看下显示的关键字后面的信息
查找关键字前10行
看关键字之前的信息 符合预期
查找上下文信息
实时查找日志
实时查找日志也是比较常用的一种
docker logs -f 容器ID
根据时间区间查找日志
可以查找某一时间点之后的数据
docker logs --since 2022-09-07T17:38:40 0fb430d22139
值得注意的是,这里有几种时间的格式,可以通过查看 docker logs --help了解详细,比如
还可以通过 docker logs --since time1 --until time2 容器ID来显示这一时间段内的数据,比如
docker logs --since 2022-09-07T17:38:40 --until 2022-09-07T17:44:40 0fb430d22139
总结
整理一些高频的命令,这些还可以组合使用,一般可以满足日常排查。