func (f FileLoggingCmdRunner) getTruncatedOutput(file boshsys.File, truncateLength int64) ([]byte, bool, error) { isTruncated := false stat, err := file.Stat() if err != nil { return nil, false, err } resultSize := truncateLength offset := stat.Size() - truncateLength if offset < 0 { resultSize = stat.Size() offset = 0 } else { isTruncated = true } data := make([]byte, resultSize) _, err = file.ReadAt(data, offset) if err != nil { return nil, false, err } // Do not truncate more than 25% of the data data = f.truncateUntilToken(data, truncateLength/int64(4)) return data, isTruncated, nil }
. "github.com/cloudfoundry/bosh-agent/internal/github.com/cloudfoundry/bosh-utils/logger/file" boshlog "github.com/cloudfoundry/bosh-agent/internal/github.com/cloudfoundry/bosh-utils/logger" boshsys "github.com/cloudfoundry/bosh-agent/internal/github.com/cloudfoundry/bosh-utils/system" fakeboshsys "github.com/cloudfoundry/bosh-agent/internal/github.com/cloudfoundry/bosh-utils/system/fakes" ) func expectedLogFormat(tag, msg string) string { return fmt.Sprintf("\\[%s\\] [0-9]{4}/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} %s\n", tag, msg) } var _ = Describe("NewFileLogger", func() { var ( fs *fakeboshsys.FakeFileSystem logFile boshsys.File ) BeforeEach(func() { fs = fakeboshsys.NewFakeFileSystem() var err error logFile, err = fs.TempFile("file-logger-test") Expect(err).ToNot(HaveOccurred()) err = logFile.Close() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { logFile.Close() fs.RemoveAll(logFile.Name()) })