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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user