@Override
    public String toString() {
        return "LogAppendInfo(" +
                "firstOffset=" + firstOffset +
                ", lastOffset=" + lastOffset +
                ", lastLeaderEpoch=" + lastLeaderEpoch +
                ", maxTimestamp=" + maxTimestamp +
                ", shallowOffsetOfMaxTimestamp=" + shallowOffsetOfMaxTimestamp +
                ", logAppendTime=" + logAppendTime +
                ", logStartOffset=" + logStartOffset +
                ", recordConversionStats=" + recordValidationStats +
                ", sourceCompression=" + sourceCompression +
                ", validBytes=" + validBytes +
                ", lastOffsetOfFirstBatch=" + lastOffsetOfFirstBatch +
                ", recordErrors=" + recordErrors +
                ", leaderHwChange=" + leaderHwChange +
                ')';
    }
In ProduceResponse V8+, we add two new fields record_errors and error_message (see KIP-467).
For any record failures with InvalidTimestamp or InvalidRecordException, we construct a LogAppendInfo object like the one
in unknownLogAppendInfoWithLogStartOffset, but with additional fields recordErrors
storage/src/main/java/org/apache/kafka/storage/internals/log/LogAppendInfo.java