diff --git a/components/engine/daemon/logger/awslogs/cloudwatchlogs.go b/components/engine/daemon/logger/awslogs/cloudwatchlogs.go index a54ddc0b73..6de65f8ac8 100644 --- a/components/engine/daemon/logger/awslogs/cloudwatchlogs.go +++ b/components/engine/daemon/logger/awslogs/cloudwatchlogs.go @@ -410,7 +410,9 @@ func (l *logStream) collectBatch() { events = l.processEvent(events, eventBuffer, eventBufferTimestamp) eventBuffer = eventBuffer[:0] } - eventBuffer = append(eventBuffer, unprocessedLine...) + // Append new line + processedLine := append(unprocessedLine, "\n"...) + eventBuffer = append(eventBuffer, processedLine...) logger.PutMessage(msg) continue } diff --git a/components/engine/daemon/logger/awslogs/cloudwatchlogs_test.go b/components/engine/daemon/logger/awslogs/cloudwatchlogs_test.go index 463843bc3c..3812b0a76e 100644 --- a/components/engine/daemon/logger/awslogs/cloudwatchlogs_test.go +++ b/components/engine/daemon/logger/awslogs/cloudwatchlogs_test.go @@ -534,7 +534,7 @@ func TestCollectBatchMultilinePattern(t *testing.T) { argument := <-mockClient.putLogEventsArgument assert.NotNil(t, argument, "Expected non-nil PutLogEventsInput") assert.Equal(t, 1, len(argument.LogEvents), "Expected LogEvents to contain 1 elements, but contains %d", len(argument.LogEvents)) - assert.Equal(t, logline+logline, *argument.LogEvents[0].Message, "Expected message to be %s but was %s", logline+logline, *argument.LogEvents[0].Message) + assert.Equal(t, logline+"\n"+logline+"\n", *argument.LogEvents[0].Message, "Expected message to be %s but was %s", logline+logline, *argument.LogEvents[0].Message) stream.Close() @@ -542,7 +542,7 @@ func TestCollectBatchMultilinePattern(t *testing.T) { argument = <-mockClient.putLogEventsArgument assert.NotNil(t, argument, "Expected non-nil PutLogEventsInput") assert.Equal(t, 1, len(argument.LogEvents), "Expected LogEvents to contain 1 elements, but contains %d", len(argument.LogEvents)) - assert.Equal(t, "xxxx "+logline, *argument.LogEvents[0].Message, "Expected message to be %s but was %s", "xxxx "+logline, *argument.LogEvents[0].Message) + assert.Equal(t, "xxxx "+logline+"\n", *argument.LogEvents[0].Message, "Expected message to be %s but was %s", "xxxx "+logline, *argument.LogEvents[0].Message) } func BenchmarkCollectBatch(b *testing.B) { @@ -647,7 +647,7 @@ func TestCollectBatchMultilinePatternMaxEventAge(t *testing.T) { argument := <-mockClient.putLogEventsArgument assert.NotNil(t, argument, "Expected non-nil PutLogEventsInput") assert.Equal(t, 1, len(argument.LogEvents), "Expected LogEvents to contain 1 elements, but contains %d", len(argument.LogEvents)) - assert.Equal(t, logline+logline, *argument.LogEvents[0].Message, "Expected message to be %s but was %s", logline+logline, *argument.LogEvents[0].Message) + assert.Equal(t, logline+"\n"+logline+"\n", *argument.LogEvents[0].Message, "Expected message to be %s but was %s", logline+logline, *argument.LogEvents[0].Message) stream.Close() } @@ -695,7 +695,7 @@ func TestCollectBatchMultilinePatternNegativeEventAge(t *testing.T) { argument := <-mockClient.putLogEventsArgument assert.NotNil(t, argument, "Expected non-nil PutLogEventsInput") assert.Equal(t, 1, len(argument.LogEvents), "Expected LogEvents to contain 1 elements, but contains %d", len(argument.LogEvents)) - assert.Equal(t, logline+logline, *argument.LogEvents[0].Message, "Expected message to be %s but was %s", logline+logline, *argument.LogEvents[0].Message) + assert.Equal(t, logline+"\n"+logline+"\n", *argument.LogEvents[0].Message, "Expected message to be %s but was %s", logline+logline, *argument.LogEvents[0].Message) stream.Close() }