Skip to content

Commit

Permalink
Add the names flag for pod logs
Browse files Browse the repository at this point in the history
Fixes containers#13261

Signed-off-by: Xueyuan Chen <X.Chen-47@student.tudelft.nl>
  • Loading branch information
keonchennl authored and Keon Chen committed Mar 18, 2022
1 parent bc9acec commit a92b83b
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 3 deletions.
1 change: 1 addition & 0 deletions cmd/podman/pods/logs.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ func logsFlags(cmd *cobra.Command) {
flags.Int64Var(&logsPodOptions.Tail, tailFlagName, -1, "Output the specified number of LINES at the end of the logs.")
_ = cmd.RegisterFlagCompletionFunc(tailFlagName, completion.AutocompleteNone)

flags.BoolVarP(&logsPodOptions.Names, "names", "n", false, "Output container names instead of container IDs in the log")
flags.BoolVarP(&logsPodOptions.Timestamps, "timestamps", "t", false, "Output the timestamps in the log")
flags.SetInterspersed(false)
_ = flags.MarkHidden("details")
Expand Down
4 changes: 4 additions & 0 deletions docs/source/markdown/podman-pod-logs.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ chance that the log file will be removed before `podman pod logs` reads the fina

Instead of providing the pod name or id, get logs of the last created pod. (This option is not available with the remote Podman client, including Mac and Windows (excluding WSL2) machines)

#### **--names**, **-n**

Output the container names instead of the container IDs in the log.

#### **--since**=*TIMESTAMP*

Show logs since TIMESTAMP. The --since option can be Unix timestamps, date formatted timestamps, or Go duration
Expand Down
7 changes: 5 additions & 2 deletions libpod/container_log_linux.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//+build linux
//+build systemd
//go:build linux && systemd
// +build linux,systemd

package libpod

Expand Down Expand Up @@ -235,6 +235,9 @@ func (c *Container) readFromJournal(ctx context.Context, options *logs.LogOption
logrus.Errorf("Failed parse log line: %v", err)
return
}
if options.UseName {
logLine.CName = c.Name()
}
if doTail {
tailQueue = append(tailQueue, logLine)
continue
Expand Down
33 changes: 32 additions & 1 deletion test/e2e/logs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ var _ = Describe("Podman logs", func() {
}
podmanTest = PodmanTestCreate(tempdir)
podmanTest.Setup()
podmanTest.SeedImages()
if err := podmanTest.SeedImages(); err != nil {
os.Exit(1)
}
})

AfterEach(func() {
Expand Down Expand Up @@ -412,4 +414,33 @@ var _ = Describe("Podman logs", func() {
logs.WaitWithDefaultTimeout()
Expect(logs).To(Not(Exit(0)))
})

It("podman pod logs with container names", func() {
SkipIfRemote("Remote can only process one container at a time")
SkipIfInContainer("journalctl inside a container doesn't work correctly")
podName := "testPod"
containerName1 := "container1"
containerName2 := "container2"

testPod := podmanTest.Podman([]string{"pod", "create", fmt.Sprintf("--name=%s", podName)})
testPod.WaitWithDefaultTimeout()
Expect(testPod).To(Exit(0))

log1 := podmanTest.Podman([]string{"run", "--name", containerName1, "-d", "--pod", podName, BB, "/bin/sh", "-c", "echo log1"})
log1.WaitWithDefaultTimeout()
Expect(log1).To(Exit(0))

log2 := podmanTest.Podman([]string{"run", "--name", containerName2, "-d", "--pod", podName, BB, "/bin/sh", "-c", "echo log2"})
log2.WaitWithDefaultTimeout()
Expect(log2).To(Exit(0))

results := podmanTest.Podman([]string{"pod", "logs", "--names", podName})
results.WaitWithDefaultTimeout()
Expect(results).To(Exit(0))

output := results.OutputToStringArray()
Expect(output).To(HaveLen(2))
Expect(output).To(ContainElement(ContainSubstring(containerName1)))
Expect(output).To(ContainElement(ContainSubstring(containerName2)))
})
})

0 comments on commit a92b83b

Please sign in to comment.