pkg/logwrite: Append .log to the log files

Also simplify the code by directly storing the path to
the log file in the LogFile structure.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
This commit is contained in:
Rolf Neugebauer 2018-07-11 15:38:17 +01:00
parent 90765efac5
commit e8786d73bb

View File

@ -62,15 +62,15 @@ func ParseLogMessage(line string) (*LogMessage, error) {
// LogFile is where we write LogMessages to
type LogFile struct {
File *os.File // active file handle
Name string // filename of log file
Dir string // log file directory
Path string // Path to the logfile
BytesWritten int // total number of bytes written so far
}
// NewLogFile creates a new LogFile.
func NewLogFile(dir, name string) (*LogFile, error) {
// If the log exists already we want to append to it.
f, err := os.OpenFile(filepath.Join(dir, name), os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0644)
p := filepath.Join(dir, name+".log")
f, err := os.OpenFile(p, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
return nil, err
}
@ -80,8 +80,7 @@ func NewLogFile(dir, name string) (*LogFile, error) {
}
return &LogFile{
File: f,
Name: name,
Dir: dir,
Path: p,
BytesWritten: int(fi.Size()),
}, nil
}
@ -106,15 +105,14 @@ func (l *LogFile) Rotate(maxLogFiles int) error {
if err := l.File.Close(); err != nil {
return err
}
path := filepath.Join(l.Dir, l.Name)
for i := maxLogFiles - 1; i >= 0; i-- {
newerFile := fmt.Sprintf("%s.%d", path, i-1)
newerFile := fmt.Sprintf("%s.%d", l.Path, i-1)
// special case: if index is 0 we omit the suffix i.e. we expect
// foo foo.1 foo.2 up to foo.<maxLogFiles-1>
if i == 0 {
newerFile = path
newerFile = l.Path
}
olderFile := fmt.Sprintf("%s.%d", path, i)
olderFile := fmt.Sprintf("%s.%d", l.Path, i)
// overwrite the olderFile with the newerFile
err := os.Rename(newerFile, olderFile)
if os.IsNotExist(err) {
@ -125,7 +123,7 @@ func (l *LogFile) Rotate(maxLogFiles int) error {
return err
}
}
f, err := os.Create(path)
f, err := os.Create(l.Path)
if err != nil {
return err
}