1
0
mirror of https://github.com/amir20/dozzle.git synced 2026-01-03 19:45:01 +01:00

fix: fixes nil pointer when message is null (#3012)

This commit is contained in:
Amir Raminfar
2024-06-04 13:51:49 -07:00
committed by GitHub
parent 895345693c
commit 0bab833fa9
4 changed files with 32 additions and 8 deletions

View File

@@ -178,8 +178,13 @@ func createEvent(message string, streamType StdType) *LogEvent {
}
}
} else {
logEvent.Message = data
if data == nil {
logEvent.Message = ""
} else {
logEvent.Message = data
}
}
} else if data, err := ParseLogFmt(message); err == nil {
logEvent.Message = data
}

View File

@@ -136,6 +136,15 @@ func Test_createEvent(t *testing.T) {
Message: "sample text with=equal sign",
},
},
{
name: "null message",
args: args{
message: "2020-05-13T18:55:37.772853839Z null",
},
want: &LogEvent{
Message: "",
},
},
}
for _, tt := range tests {

View File

@@ -46,6 +46,9 @@ func guessLogLevel(logEvent *LogEvent) string {
}
case *orderedmap.OrderedMap[string, any]:
if value == nil {
return ""
}
if level, ok := value.Get("level"); ok {
if level, ok := level.(string); ok {
return strings.ToLower(level)
@@ -53,6 +56,9 @@ func guessLogLevel(logEvent *LogEvent) string {
}
case *orderedmap.OrderedMap[string, string]:
if value == nil {
return ""
}
if level, ok := value.Get("level"); ok {
return strings.ToLower(level)
}

View File

@@ -1,12 +1,14 @@
package docker
import (
"encoding/json"
"testing"
orderedmap "github.com/wk8/go-ordered-map/v2"
)
func TestGuessLogLevel(t *testing.T) {
var nilOrderedMap *orderedmap.OrderedMap[string, any]
tests := []struct {
input any
expected string
@@ -43,15 +45,17 @@ func TestGuessLogLevel(t *testing.T) {
orderedmap.Pair[string, any]{Key: "level", Value: "info"},
),
), "info"},
{nilOrderedMap, ""},
{nil, ""},
}
for _, test := range tests {
logEvent := &LogEvent{
Message: test.input,
}
if level := guessLogLevel(logEvent); level != test.expected {
t.Errorf("guessLogLevel(%s) = %s, want %s", test.input, level, test.expected)
}
name, _ := json.Marshal(test.input)
t.Run(string(name), func(t *testing.T) {
actual := guessLogLevel(&LogEvent{Message: test.input})
if actual != test.expected {
t.Errorf("Expected %s, got %s", test.expected, actual)
}
})
}
}