mirror of
https://github.com/containers/podman.git
synced 2025-06-24 19:42:56 +08:00
Merge pull request #14477 from Luap99/partial-logs
podman logs k8s-file: do not reassemble partial log lines
This commit is contained in:
@ -75,7 +75,6 @@ func (c *Container) readFromLogFile(ctx context.Context, options *logs.LogOption
|
||||
go func() {
|
||||
defer options.WaitGroup.Done()
|
||||
|
||||
var partial string
|
||||
for line := range t.Lines {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
@ -89,13 +88,6 @@ func (c *Container) readFromLogFile(ctx context.Context, options *logs.LogOption
|
||||
logrus.Errorf("Getting new log line: %v", err)
|
||||
continue
|
||||
}
|
||||
if nll.Partial() {
|
||||
partial += nll.Msg
|
||||
continue
|
||||
} else if !nll.Partial() && len(partial) > 0 {
|
||||
nll.Msg = partial + nll.Msg
|
||||
partial = ""
|
||||
}
|
||||
nll.CID = c.ID()
|
||||
nll.CName = c.Name()
|
||||
nll.ColorID = colorID
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"time"
|
||||
|
||||
. "github.com/containers/podman/v4/test/utils"
|
||||
"github.com/containers/storage/pkg/stringid"
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
. "github.com/onsi/gomega/gexec"
|
||||
@ -370,6 +371,26 @@ var _ = Describe("Podman logs", func() {
|
||||
Expect(results.OutputToString()).To(Equal("stdout"))
|
||||
Expect(results.ErrorToString()).To(Equal("stderr"))
|
||||
})
|
||||
|
||||
It("podman logs partial log lines: "+log, func() {
|
||||
skipIfJournaldInContainer()
|
||||
|
||||
cname := "log-test"
|
||||
content := stringid.GenerateNonCryptoID()
|
||||
// use printf to print no extra newline
|
||||
logc := podmanTest.Podman([]string{"run", "--log-driver", log, "--name", cname, ALPINE, "printf", content})
|
||||
logc.WaitWithDefaultTimeout()
|
||||
Expect(logc).To(Exit(0))
|
||||
// Important: do not use OutputToString(), this will remove the trailing newline from the output.
|
||||
// However this test must make sure that there is no such extra newline.
|
||||
Expect(string(logc.Out.Contents())).To(Equal(content))
|
||||
|
||||
logs := podmanTest.Podman([]string{"logs", cname})
|
||||
logs.WaitWithDefaultTimeout()
|
||||
Expect(logs).To(Exit(0))
|
||||
// see comment above
|
||||
Expect(string(logs.Out.Contents())).To(Equal(content))
|
||||
})
|
||||
}
|
||||
|
||||
It("using journald for container with container tag", func() {
|
||||
|
Reference in New Issue
Block a user