forked from KeKe-Li/log
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjson_formatter_test.go
70 lines (66 loc) · 1.71 KB
/
json_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
65
66
67
68
69
70
package log
import (
"encoding/json"
"reflect"
"testing"
"time"
)
func TestJsonFormatter_Format(t *testing.T) {
entry := &Entry{
Location: "function(file:line)",
Time: time.Date(2018, time.May, 20, 8, 20, 30, 666000000, 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
fieldKeyTime: "time",
fieldKeyLevel: "level",
fieldKeyTraceId: "request_id",
fieldKeyLocation: "location",
fieldKeyMessage: "msg",
},
Buffer: nil,
}
data, err := JsonFormatter.Format(entry)
if err != nil {
t.Error(err.Error())
return
}
if len(data) == 0 || data[len(data)-1] != '\n' {
t.Error("want end with '\n'")
return
}
var have map[string]string
if err = json.Unmarshal(data, &have); err != nil {
t.Error(err.Error())
return
}
want := map[string]string{
"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", // error
}
if !reflect.DeepEqual(have, want) {
t.Errorf("\nhave:%v\nwant:%v", have, want)
return
}
}
type testError struct {
X string `json:"x"`
}
func (e *testError) Error() string {
return "test_error_123456789"
}