Skip to content

Commit 4479010

Browse files
authored
[LogHouse][Processor] Handle json levels (#327)
1 parent a080642 commit 4479010

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

processor/loghouseprocessor/processor.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,17 @@ func processOneLogLine(l *plog.LogRecord) error {
123123
return nil
124124
}
125125

126+
func parseSeverity(l *plog.LogRecord) error {
127+
logLevel, ok := l.Attributes().Get("level")
128+
if !ok {
129+
return fmt.Errorf("no level specified")
130+
}
131+
updateSeverity(strings.ToUpper(logLevel.Str()), l)
132+
return nil
133+
}
134+
126135
func processJSONLog(l *plog.LogRecord) {
136+
_ = parseSeverity(l)
127137
extractBody(l)
128138
isCH := parseCHTimestamp(l)
129139
if isCH {

processor/loghouseprocessor/processor_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,39 @@ import (
1010
"go.opentelemetry.io/collector/pdata/plog"
1111
)
1212

13+
func Test_dp(t *testing.T) {
14+
t.Run("json severity", func(t *testing.T) {
15+
// Define the test cases in a table format
16+
tests := []struct {
17+
name string
18+
input string
19+
expectedText string
20+
expectedLevel plog.SeverityNumber
21+
}{
22+
{"Error severity", "{\"level\": \"fatal\"}", FATAL, plog.SeverityNumberFatal},
23+
{"Error severity", "{\"level\": \"error\"}", ERROR, plog.SeverityNumberError},
24+
{"Warning severity", "{\"level\": \"warn\"}", WARN, plog.SeverityNumberWarn},
25+
{"Info severity", "{\"level\": \"info\"}", INFO, plog.SeverityNumberInfo},
26+
{"Debug severity", "{\"level\": \"debug\"}", DEBUG, plog.SeverityNumberDebug},
27+
{"Debug severity", "{\"level\": \"trace\"}", TRACE, plog.SeverityNumberTrace},
28+
// Add more severity levels if needed
29+
}
30+
31+
for _, tc := range tests {
32+
t.Run(tc.name, func(t *testing.T) {
33+
log := plog.NewLogRecord()
34+
log.Body().SetStr(tc.input)
35+
36+
err := processOneLogLine(&log)
37+
assert.NoError(t, err)
38+
39+
assert.Equal(t, tc.expectedText, log.SeverityText())
40+
assert.Equal(t, tc.expectedLevel, log.SeverityNumber())
41+
})
42+
}
43+
})
44+
}
45+
1346
func Test_plaintextSeverity(t *testing.T) {
1447
t.Run("trace", func(t *testing.T) {
1548
line := "2023-01-02 11:20:30 <TRACE> some log line"

0 commit comments

Comments
 (0)