-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlogfmt_test.go
More file actions
65 lines (51 loc) · 1.79 KB
/
Copy pathlogfmt_test.go
File metadata and controls
65 lines (51 loc) · 1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package logparser
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestParseLogfmtLevel(t *testing.T) {
// Basic unquoted values
lvl, ok := parseLogfmtLevel(`ts=2024-01-15 level=error msg="failed"`)
assert.True(t, ok)
assert.Equal(t, LevelError, lvl)
lvl, ok = parseLogfmtLevel(`level=info msg="started"`)
assert.True(t, ok)
assert.Equal(t, LevelInfo, lvl)
lvl, ok = parseLogfmtLevel(`ts=2024-01-15 level=warn msg="slow"`)
assert.True(t, ok)
assert.Equal(t, LevelWarning, lvl)
// Quoted values
lvl, ok = parseLogfmtLevel(`ts=2024 level="error" msg="timeout"`)
assert.True(t, ok)
assert.Equal(t, LevelError, lvl)
lvl, ok = parseLogfmtLevel(`level="WARNING" msg="deprecated"`)
assert.True(t, ok)
assert.Equal(t, LevelWarning, lvl)
// Alternative key names
lvl, ok = parseLogfmtLevel(`ts=2024 lvl=error msg="fail"`)
assert.True(t, ok)
assert.Equal(t, LevelError, lvl)
lvl, ok = parseLogfmtLevel(`severity=fatal msg="crash"`)
assert.True(t, ok)
assert.Equal(t, LevelCritical, lvl)
// No level field
_, ok = parseLogfmtLevel(`ts=2024 msg="no level here"`)
assert.False(t, ok)
// Not logfmt at all
_, ok = parseLogfmtLevel(`just a plain text log line`)
assert.False(t, ok)
// level= not at word boundary (should not match)
_, ok = parseLogfmtLevel(`mylevel=error msg="fail"`)
assert.False(t, ok)
// level at start of line (valid)
lvl, ok = parseLogfmtLevel(`level=debug msg="trace"`)
assert.True(t, ok)
assert.Equal(t, LevelDebug, lvl)
}
func TestExtractLogfmtValue(t *testing.T) {
assert.Equal(t, "error", extractLogfmtValue(`error msg="test"`))
assert.Equal(t, "error", extractLogfmtValue(`"error" msg="test"`))
assert.Equal(t, "warn", extractLogfmtValue("warn"))
assert.Equal(t, "", extractLogfmtValue(""))
assert.Equal(t, "info", extractLogfmtValue(`"info"`))
}