惯例,遇到了问题才想到这里,前几天在修改别人的一分Go代码,在虚拟机里测试的时候是直接执行的,可以查看日志,确认程序执行情况,今天已经更新至容器内运行,想看看如何查看程序日志,然后就是这样的了。
前言
docker
也有类似于tail的命令,就是docker logs
,通过使用该命令,可以在宿主机上不进入容器,直接查看容器内的日志,当然方法不限于此,其他方面在下面会一一说明。
命令说明
首先,作为程序员,肯定要首先看的是help
了,看看这里说的是什么吧
~$ sudo docker logs --help
Usage: docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
Options:
--details Show extra details provided to logs
-f, --follow Follow log output
--since string Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
--tail string Number of lines to show from the end of the logs (default "all")
-t, --timestamps Show timestamps
--until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
翻译成人话就是:
使用格式:docker logs [OPTIONS] CONTAINER
docker logs [下方的方法] 容器名
具体方法:
details : 显示提供给日志的额外详细信息 (不常用)
follow : 跟随输出 (常用) 可以使用 -f代替
since : 显示自某个时间之后的日志,时间格式可以是绝对时间也可以是相对时间
tail : 直接显示的日志行数,默认是all 即将容器的日志全都打印出来(最好是since和tail 至少二选一,不然日志可能会很多)
timestamps: 字面意思,是否显示时间戳 可以使用-t代替
until : 显示某个时间之前的日志,时间格式可以是绝对时间也可以是相对时间,可以配合since截取日志范围
使用示例
docker logs -f -t --since "2022-07-26" --tail 10 container
即显示时间戳,跟随显示自7月26日之后日志,显示前10行。
另外参考
docker查看日志的三种方式:
1.docker logs --tail 1000 容器名称 (查看容器前多少行的日志)即前面所说的方法
2.docker 容器启动后,可以进入以下位置查看日志(/var/lib/docker/containers/容器ID/容器ID-json.log)(进入容器内部查看日志)
3.docker attach 容器名称(实时查看,但是CTRL+C强制退出以后也会影响容器的进程,导致强制退出),设置 docker attach --sign-proxy=false 容器名称(实时查看日志内容)
评论区