From 45a11dd01d450108c8a0c5423be16ce75baebdf7 Mon Sep 17 00:00:00 2001 From: Yevhen Vydolob Date: Thu, 7 Dec 2023 12:49:42 +0200 Subject: [PATCH] Fix logging channel messages. Having '\n' character in between message field is braking SSE specification and client could not parse correctly such events Signed-off-by: Yevhen Vydolob --- pkg/crc/api/events/log_stream.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkg/crc/api/events/log_stream.go b/pkg/crc/api/events/log_stream.go index 2601a38e87..bbb60b067d 100644 --- a/pkg/crc/api/events/log_stream.go +++ b/pkg/crc/api/events/log_stream.go @@ -1,6 +1,8 @@ package events import ( + "bytes" + "github.com/crc-org/crc/v2/pkg/crc/logging" "github.com/r3labs/sse/v2" "github.com/sirupsen/logrus" @@ -23,7 +25,7 @@ func newSSEStreamHook(server *sse.Server) *streamHook { &logrus.JSONFormatter{ TimestampFormat: "", DisableTimestamp: false, - DisableHTMLEscape: false, + DisableHTMLEscape: true, DataKey: "", FieldMap: nil, CallerPrettyfier: nil, @@ -56,7 +58,10 @@ func (s *streamHook) Fire(entry *logrus.Entry) error { return err } - s.server.Publish(LOGS, &sse.Event{Event: []byte(LOGS), Data: line}) + // remove "Line Feed"("\n") character which add was added by json.Encoder + line = bytes.TrimRight(line, "\n") + + s.server.Publish(Logs, &sse.Event{Event: []byte(Logs), Data: line}) return nil }