varlogCommand=cli.Command{Name:"logs",Usage:"print logs of a container",Action:func(context*cli.Context)error{iflen(context.Args())<1{returnfmt.Errorf("please input your container name")}containerName:=context.Args().Get(0)logContainer(containerName)returnnil},}
root@mydocker:~/feat-logs/mydocker# go build .
root@mydocker:~/feat-logs/mydocker# ./mydocker run -d -name mytop top
{"level":"info","msg":"createTty false","time":"2024-01-26T11:25:53+08:00"}{"level":"info","msg":"resConf:\u0026{ 0 }","time":"2024-01-26T11:25:53+08:00"}{"level":"info","msg":"busybox:/root/busybox busybox.tar:/root/busybox.tar","time":"2024-01-26T11:25:53+08:00"}{"level":"error","msg":"mkdir dir /root/merged error. mkdir /root/merged: file exists","time":"2024-01-26T11:25:53+08:00"}{"level":"error","msg":"mkdir dir /root/upper error. mkdir /root/upper: file exists","time":"2024-01-26T11:25:53+08:00"}{"level":"error","msg":"mkdir dir /root/work error. mkdir /root/work: file exists","time":"2024-01-26T11:25:53+08:00"}{"level":"info","msg":"mount overlayfs: [/usr/bin/mount -t overlay overlay -o lowerdir=/root/busybox,upperdir=/root/upper,workdir=/root/work /root/merged]","time":"2024-01-26T11:25:53+08:00"}{"level":"info","msg":"command all is top","time":"2024-01-26T11:25:53+08:00"}
查看容器列表
1
2
3
4
5
root@mydocker:~/feat-logs/mydocker# ./mydocker ps
{"level":"error","msg":"read file /var/lib/mydocker/containers/0439540405/config.json error open /var/lib/mydocker/containers/0439540405/config.json: no such file or directory","time":"2024-01-26T11:26:13+08:00"}{"level":"error","msg":"get container info error open /var/lib/mydocker/containers/0439540405/config.json: no such file or directory","time":"2024-01-26T11:26:13+08:00"}ID NAME PID STATUS COMMAND CREATED
0439540405 mytop 171754 running top 2024-01-26 11:25:53
容器 Id 为 0439540405,查看对应目录是否生成了日志文件
1
2
root@mydocker:~/feat-logs/mydocker# ls /var/lib/mydocker/containers/0439540405/
0439540405-json.log config.json