|
|
@ -60,10 +60,8 @@ func (l *LogFile) fileNamePattern() string {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (l *LogFile) openNew() error {
|
|
|
|
func (l *LogFile) openNew() error {
|
|
|
|
fileNamePattern := l.fileNamePattern()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
createTime := now()
|
|
|
|
createTime := now()
|
|
|
|
newfileName := fmt.Sprintf(fileNamePattern, strconv.FormatInt(createTime.UnixNano(), 10))
|
|
|
|
newfileName := l.fileName
|
|
|
|
newfilePath := filepath.Join(l.logPath, newfileName)
|
|
|
|
newfilePath := filepath.Join(l.logPath, newfileName)
|
|
|
|
|
|
|
|
|
|
|
|
// Try creating a file. We truncate the file because we are the only authority to write the logs
|
|
|
|
// Try creating a file. We truncate the file because we are the only authority to write the logs
|
|
|
@ -79,12 +77,28 @@ func (l *LogFile) openNew() error {
|
|
|
|
return nil
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func (l *LogFile) renameCurrentFile() error {
|
|
|
|
|
|
|
|
fileNamePattern := l.fileNamePattern()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
createTime := now()
|
|
|
|
|
|
|
|
// Current file is consul.log always
|
|
|
|
|
|
|
|
currentFilePath := filepath.Join(l.logPath, l.fileName)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
oldFileName := fmt.Sprintf(fileNamePattern, strconv.FormatInt(createTime.UnixNano(), 10))
|
|
|
|
|
|
|
|
oldFilePath := filepath.Join(l.logPath, oldFileName)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return os.Rename(currentFilePath, oldFilePath)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (l *LogFile) rotate() error {
|
|
|
|
func (l *LogFile) rotate() error {
|
|
|
|
// Get the time from the last point of contact
|
|
|
|
// Get the time from the last point of contact
|
|
|
|
timeElapsed := time.Since(l.LastCreated)
|
|
|
|
timeElapsed := time.Since(l.LastCreated)
|
|
|
|
// Rotate if we hit the byte file limit or the time limit
|
|
|
|
// Rotate if we hit the byte file limit or the time limit
|
|
|
|
if (l.BytesWritten >= int64(l.MaxBytes) && (l.MaxBytes > 0)) || timeElapsed >= l.duration {
|
|
|
|
if (l.BytesWritten >= int64(l.MaxBytes) && (l.MaxBytes > 0)) || timeElapsed >= l.duration {
|
|
|
|
l.FileInfo.Close()
|
|
|
|
l.FileInfo.Close()
|
|
|
|
|
|
|
|
if err := l.renameCurrentFile(); err != nil {
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
if err := l.pruneFiles(); err != nil {
|
|
|
|
if err := l.pruneFiles(); err != nil {
|
|
|
|
return err
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|