in file/rotator.go [207:239]
func (r *Rotator) Write(data []byte) (int, error) {
r.mutex.Lock()
defer r.mutex.Unlock()
dataLen := uint(len(data))
if dataLen > r.maxSizeBytes {
return 0, fmt.Errorf("data size (%d bytes) is greater than "+
"the max file size (%d bytes)", dataLen, r.maxSizeBytes)
}
if r.file == nil {
if err := r.openNew(); err != nil {
return 0, fmt.Errorf("failed to open new log file for writing: %w", err)
}
} else {
if reason, t := r.isRotationTriggered(dataLen); reason != rotateReasonNoRotate {
if err := r.rotateWithTime(reason, t); err != nil {
return 0, fmt.Errorf("error file rotating files reason: %s: %w", reason, err)
}
if err := r.openFile(); err != nil {
return 0, fmt.Errorf("failed to open existing log file for writing: %w", err)
}
}
}
n, err := r.file.Write(data)
if err != nil {
return n, fmt.Errorf("failed to write to file: %w", err)
}
return n, nil
}