Skip to content
This repository was archived by the owner on Jun 25, 2025. It is now read-only.

Commit 2569391

Browse files
author
Matthew Fisher
committed
fix(log): fix panic error when building app log message
1 parent ec3c26c commit 2569391

2 files changed

Lines changed: 23 additions & 4 deletions

File tree

log/message_handler.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,17 @@ func buildControllerLogMessage(message *Message) string {
5353
}
5454

5555
func buildApplicationLogMessage(message *Message) string {
56-
return fmt.Sprintf("%s %s[%s.%s.%s]: %s",
56+
p := podRegex.FindStringSubmatch(message.Kubernetes.PodName)
57+
tag := fmt.Sprintf(
58+
"%s.%s",
59+
message.Kubernetes.Labels["type"],
60+
message.Kubernetes.Labels["version"])
61+
if len(p) > 0 {
62+
tag = fmt.Sprintf("%s.%s", tag, p[len(p)-1])
63+
}
64+
return fmt.Sprintf("%s %s[%s]: %s",
5765
message.Time.Format(timeFormat),
5866
message.Kubernetes.Labels["app"],
59-
message.Kubernetes.Labels["type"],
60-
message.Kubernetes.Labels["version"],
61-
podRegex.FindStringSubmatch(message.Kubernetes.PodName)[4],
67+
tag,
6268
message.Log)
6369
}

log/message_handler_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ var (
1818
validAppMessage = `{"log": "test message", "stream": "stderr", "time": "2016-10-18T20:29:38+00:00", "docker": {"container_id": "containerId"}, "kubernetes": {"namespace_name": "foo", "pod_id": "podId", "pod_name": "foo-web-845861952-nzf60", "container_name": "foo-web", "labels": {"app": "foo",
1919
"heritage": "deis", "type": "web", "version": "v2"}, "host": "host"}}`
2020

21+
badPodNameMessage = `{"log": "test message", "stream": "stderr", "time": "2016-10-18T20:29:38+00:00", "docker": {"container_id": "containerId"}, "kubernetes": {"namespace_name": "foo", "pod_id": "podId", "pod_name": "foo-web-845861952", "container_name": "foo-web", "labels": {"app": "foo",
22+
"heritage": "deis", "type": "web", "version": "v2"}, "host": "host"}}`
23+
2124
badjson = `{"log":}`
2225
)
2326

@@ -63,6 +66,16 @@ func TestBuildApplicationLogMessageFromValidMessage(t *testing.T) {
6366
"failed to build application log")
6467
}
6568

69+
func TestBuildApplicationLogMessageFromInvalidMessage(t *testing.T) {
70+
message := new(Message)
71+
err := json.Unmarshal([]byte(badPodNameMessage), message)
72+
assert.NoError(t, err, "error occured parsing log message")
73+
expected := buildApplicationLogMessage(message)
74+
assert.Equal(t, expected,
75+
"2016-10-18T20:29:38+00:00 foo[web.v2]: test message",
76+
"failed to build application log")
77+
}
78+
6679
func TestHandleValidAppMessage(t *testing.T) {
6780
a, err := storage.NewRingBufferAdapter(1)
6881
assert.NoError(t, err, "error creating ring buffer")

0 commit comments

Comments
 (0)