-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathtext_formatter_test.go
64 lines (61 loc) · 1.81 KB
/
text_formatter_test.go
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
package log
import (
"encoding/json"
"reflect"
"testing"
"time"
)
func TestTextFormatter_Format(t *testing.T) {
entry := &Entry{
Location: "function(file:line)",
Time: time.Date(2018, time.May, 20, 8, 20, 30, 666777888, time.UTC),
Level: InfoLevel,
TraceId: "trace_id_123456789",
Message: "message_123456789",
Fields: map[string]interface{}{
"key1": "fields_value1",
"key2": "fields_value2",
"key3": &testError{X: "123456789"}, // error
"key4": json.RawMessage([]byte(`{"code":0,"msg":""}`)),
fieldKeyTime: "time",
fieldKeyLevel: "level",
fieldKeyTraceId: "request_id",
fieldKeyLocation: "location",
fieldKeyMessage: "msg",
},
Buffer: nil,
}
have, err := TextFormatter.Format(entry)
if err != nil {
t.Error(err.Error())
return
}
want := `time=2018-05-20 16:20:30.666, level=info, request_id=trace_id_123456789, location=function(file:line), msg=message_123456789, ` +
`fields.level=level, fields.location=location, fields.msg=msg, fields.request_id=request_id, fields.time=time, ` +
`key1=fields_value1, key2=fields_value2, key3=test_error_123456789, key4={"code":0,"msg":""}` + "\n"
if string(have) != want {
t.Errorf("\nhave:%s\nwant:%s", have, want)
return
}
}
func TestPrefixFieldClashes(t *testing.T) {
m := map[string]interface{}{
"time": "time",
"fields.time": "fields.time",
"level": "level",
"fields.level": "fields.level",
"fields.level.2": "fields.level.2",
}
prefixFieldClashes(m)
want := map[string]interface{}{
"fields.time.2": "time",
"fields.time": "fields.time",
"fields.level.3": "level",
"fields.level": "fields.level",
"fields.level.2": "fields.level.2",
}
if !reflect.DeepEqual(m, want) {
t.Errorf("\nhave:%v\nwant:%v", m, want)
return
}
}