fix: rotate result file size, add "saved" and omit empty values

This commit is contained in:
yusing 2025-04-30 18:17:09 +08:00
parent 62c551c7fe
commit 53d54a09b0

View file

@ -30,17 +30,29 @@ type RotateResult struct {
} }
func (r *RotateResult) Print(logger *zerolog.Logger) { func (r *RotateResult) Print(logger *zerolog.Logger) {
logger.Info(). event := logger.Info().
Str("original_size", strutils.FormatByteSize(r.OriginalSize)). Str("original_size", strutils.FormatByteSize(r.OriginalSize))
Str("bytes_read", strutils.FormatByteSize(r.NumBytesRead)). if r.NumBytesRead > 0 {
Str("bytes_keep", strutils.FormatByteSize(r.NumBytesKeep)). event.Str("bytes_read", strutils.FormatByteSize(r.NumBytesRead))
Int("lines_read", r.NumLinesRead). }
Int("lines_keep", r.NumLinesKeep). if r.NumBytesKeep > 0 {
Int("lines_invalid", r.NumLinesInvalid). event.Str("bytes_keep", strutils.FormatByteSize(r.NumBytesKeep))
}
if r.NumLinesRead > 0 {
event.Int("lines_read", r.NumLinesRead)
}
if r.NumLinesKeep > 0 {
event.Int("lines_keep", r.NumLinesKeep)
}
if r.NumLinesInvalid > 0 {
event.Int("lines_invalid", r.NumLinesInvalid)
}
event.Str("saved", strutils.FormatByteSize(r.OriginalSize-r.NumBytesKeep)).
Msg("log rotate result") Msg("log rotate result")
} }
func (r *RotateResult) Add(other *RotateResult) { func (r *RotateResult) Add(other *RotateResult) {
r.OriginalSize += other.OriginalSize
r.NumBytesRead += other.NumBytesRead r.NumBytesRead += other.NumBytesRead
r.NumBytesKeep += other.NumBytesKeep r.NumBytesKeep += other.NumBytesKeep
r.NumLinesRead += other.NumLinesRead r.NumLinesRead += other.NumLinesRead
@ -102,16 +114,16 @@ func rotateLogFileByPolicy(file supportRotate, config *Retention) (result *Rotat
return nil, err return nil, err
} }
// nothing to rotate, return the nothing
if fileSize == 0 {
return nil, nil
}
s := NewBackScanner(file, fileSize, defaultChunkSize) s := NewBackScanner(file, fileSize, defaultChunkSize)
result = &RotateResult{ result = &RotateResult{
OriginalSize: fileSize, OriginalSize: fileSize,
} }
// nothing to rotate, return the nothing
if result.OriginalSize == 0 {
return nil, nil
}
// Store the line positions and sizes we want to keep // Store the line positions and sizes we want to keep
linesToKeep := make([]lineInfo, 0) linesToKeep := make([]lineInfo, 0)
lastLineValid := false lastLineValid := false