|
@@ -384,15 +384,18 @@ func (l *logStream) collectBatch() {
|
|
eventBufferNegative := eventBufferAge < 0
|
|
eventBufferNegative := eventBufferAge < 0
|
|
if eventBufferExpired || eventBufferNegative {
|
|
if eventBufferExpired || eventBufferNegative {
|
|
events = l.processEvent(events, eventBuffer, eventBufferTimestamp)
|
|
events = l.processEvent(events, eventBuffer, eventBufferTimestamp)
|
|
|
|
+ eventBuffer = eventBuffer[:0]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
l.publishBatch(events)
|
|
l.publishBatch(events)
|
|
events = events[:0]
|
|
events = events[:0]
|
|
case msg, more := <-l.messages:
|
|
case msg, more := <-l.messages:
|
|
if !more {
|
|
if !more {
|
|
- // Flush event buffer
|
|
|
|
|
|
+ // Flush event buffer and release resources
|
|
events = l.processEvent(events, eventBuffer, eventBufferTimestamp)
|
|
events = l.processEvent(events, eventBuffer, eventBufferTimestamp)
|
|
|
|
+ eventBuffer = eventBuffer[:0]
|
|
l.publishBatch(events)
|
|
l.publishBatch(events)
|
|
|
|
+ events = events[:0]
|
|
return
|
|
return
|
|
}
|
|
}
|
|
if eventBufferTimestamp == 0 {
|
|
if eventBufferTimestamp == 0 {
|
|
@@ -400,17 +403,13 @@ func (l *logStream) collectBatch() {
|
|
}
|
|
}
|
|
unprocessedLine := msg.Line
|
|
unprocessedLine := msg.Line
|
|
if l.multilinePattern != nil {
|
|
if l.multilinePattern != nil {
|
|
- if l.multilinePattern.Match(unprocessedLine) {
|
|
|
|
- // This is a new log event so flush the current eventBuffer to events
|
|
|
|
|
|
+ if l.multilinePattern.Match(unprocessedLine) || len(eventBuffer)+len(unprocessedLine) > maximumBytesPerEvent {
|
|
|
|
+ // This is a new log event or we will exceed max bytes per event
|
|
|
|
+ // so flush the current eventBuffer to events and reset timestamp
|
|
events = l.processEvent(events, eventBuffer, eventBufferTimestamp)
|
|
events = l.processEvent(events, eventBuffer, eventBufferTimestamp)
|
|
eventBufferTimestamp = msg.Timestamp.UnixNano() / int64(time.Millisecond)
|
|
eventBufferTimestamp = msg.Timestamp.UnixNano() / int64(time.Millisecond)
|
|
eventBuffer = eventBuffer[:0]
|
|
eventBuffer = eventBuffer[:0]
|
|
}
|
|
}
|
|
- // If we will exceed max bytes per event flush the current event buffer before appending
|
|
|
|
- if len(eventBuffer)+len(unprocessedLine) > maximumBytesPerEvent {
|
|
|
|
- events = l.processEvent(events, eventBuffer, eventBufferTimestamp)
|
|
|
|
- eventBuffer = eventBuffer[:0]
|
|
|
|
- }
|
|
|
|
// Append new line
|
|
// Append new line
|
|
processedLine := append(unprocessedLine, "\n"...)
|
|
processedLine := append(unprocessedLine, "\n"...)
|
|
eventBuffer = append(eventBuffer, processedLine...)
|
|
eventBuffer = append(eventBuffer, processedLine...)
|