Skip to content

Commit 80a7c13

Browse files
authored
Merge pull request #205 from Random-Liu/improve-log-support
Improve log support
2 parents f2fa9a1 + 2f0a36a commit 80a7c13

File tree

6 files changed

+217
-3
lines changed

6 files changed

+217
-3
lines changed

cmd/crictl/container.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@ func ListContainers(client pb.RuntimeServiceClient, opts listOptions) error {
519519
filter.PodSandboxId = opts.podID
520520
}
521521
st := &pb.ContainerStateValue{}
522-
if !opts.all {
522+
if !opts.all && opts.state == "" {
523523
st.State = pb.ContainerState_CONTAINER_RUNNING
524524
filter.State = st
525525
}

cmd/crictl/logs.go

+37-1
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ import (
2121
"os"
2222
"time"
2323

24+
timetypes "github.com/docker/docker/api/types/time"
2425
"github.com/urfave/cli"
2526
"k8s.io/api/core/v1"
27+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2628
"k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs"
2729
)
2830

@@ -36,7 +38,7 @@ var logsCommand = cli.Command{
3638
Usage: "Follow log output",
3739
},
3840
cli.Int64Flag{
39-
Name: "tail, t",
41+
Name: "tail",
4042
Value: -1,
4143
Usage: "Number of lines to show from the end of the logs. Defaults to all",
4244
},
@@ -45,6 +47,15 @@ var logsCommand = cli.Command{
4547
Value: -1,
4648
Usage: "Maximum bytes of logs to return. Defaults to no limit",
4749
},
50+
cli.StringFlag{
51+
Name: "since",
52+
Value: "",
53+
Usage: "Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)",
54+
},
55+
cli.BoolFlag{
56+
Name: "timestamps, t",
57+
Usage: "Show timestamps",
58+
},
4859
},
4960
Action: func(context *cli.Context) error {
5061
runtimeService, err := getRuntimeService(context)
@@ -58,10 +69,17 @@ var logsCommand = cli.Command{
5869
}
5970
tailLines := context.Int64("tail")
6071
limitBytes := context.Int64("limit-bytes")
72+
since, err := parseTimestamp(context.String("since"))
73+
if err != nil {
74+
return err
75+
}
76+
timestamp := context.Bool("timestamps")
6177
logOptions := logs.NewLogOptions(&v1.PodLogOptions{
6278
Follow: context.Bool("follow"),
6379
TailLines: &tailLines,
6480
LimitBytes: &limitBytes,
81+
SinceTime: since,
82+
Timestamps: timestamp,
6583
}, time.Now())
6684
status, err := runtimeService.ContainerStatus(containerID)
6785
if err != nil {
@@ -75,3 +93,21 @@ var logsCommand = cli.Command{
7593
},
7694
After: closeConnection,
7795
}
96+
97+
// parseTimestamp parses timestamp string as golang duration,
98+
// then RFC3339 time and finally as a Unix timestamp.
99+
func parseTimestamp(value string) (*metav1.Time, error) {
100+
if value == "" {
101+
return nil, nil
102+
}
103+
str, err := timetypes.GetTimestamp(value, time.Now())
104+
if err != nil {
105+
return nil, err
106+
}
107+
s, ns, err := timetypes.ParseTimestamps(str, 0)
108+
if err != nil {
109+
return nil, err
110+
}
111+
t := metav1.NewTime(time.Unix(s, ns))
112+
return &t, nil
113+
}

vendor.conf

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ github.com/juju/ratelimit 5b9ff866471762aa2ab2dced63c9fb6f53921342
2020
github.com/mailru/easyjson d5b7844b561a7bc640052f1b935f7b800330d7e0
2121
github.com/onsi/ginkgo 67b9df7f55fe1165fd9ad49aca7754cce01a42b8
2222
github.com/onsi/gomega d59fa0ac68bb5dd932ee8d24eed631cdd519efc3
23+
github.com/opencontainers/selinux b29023b86e4a69d1b46b7e7b4e2b6fda03f0b9cd
2324
github.com/pborman/uuid ca53cad383cad2479bbba7f7a1a05797ec1386e4
2425
github.com/peterbourgon/diskv 5f041e8faa004a95c88a202771f4cc3e991971e6
2526
github.com/PuerkitoBio/purell v1.0.0
@@ -41,4 +42,3 @@ k8s.io/client-go 72e1c2a1ef30b3f8da039e92d4a6a1f079f374e8
4142
k8s.io/kube-openapi 39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1
4243
k8s.io/kubernetes 164317879bcd810b97e5ebf1c8df041770f2ff1b
4344
k8s.io/utils bf963466fd3fea33c428098b12a89d8ecd012f2
44-
github.com/opencontainers/selinux b29023b86e4a69d1b46b7e7b4e2b6fda03f0b9cd

vendor/github.com/docker/docker/api/README.md

+42
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/docker/docker/api/types/time/duration_convert.go

+12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/docker/docker/api/types/time/timestamp.go

+124
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)