-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathexample_test.go
More file actions
133 lines (121 loc) · 2.74 KB
/
example_test.go
File metadata and controls
133 lines (121 loc) · 2.74 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package log_test
import (
"encoding/json"
"io"
"io/ioutil"
"os"
"github.com/PermissionData/log"
)
func ExampleNew_customFilters() {
logger := log.New(log.Config{
Threshold: log.TraceLevel,
Encoder: json.NewEncoder(os.Stdout),
Filters: []log.Filter{
log.DefaultFilter,
func(lvl, threshold log.Level, data log.Data) log.Data {
data["hey"] = &struct{ Ho bool }{true}
return data
},
func(lvl, threshold log.Level, data log.Data) log.Data {
if data == nil {
return nil
}
data["@timestamp"] = nil
return data
},
},
})
logger.Log(log.InfoLevel, log.Data{
"foo": "bar",
"pi": 3.14,
})
// Output:
// {"@timestamp":null,"@version":"1","foo":"bar","hey":{"Ho":true},"log_level":"Info","pi":3.14}
}
func ExampleNew_toFile() {
logFile, err := ioutil.TempFile("", "service.log")
if err != nil {
panic(err)
}
defer os.Remove(logFile.Name()) // cleanup for example
defer logFile.Close()
logger := log.New(log.Config{
Threshold: log.TraceLevel,
Encoder: json.NewEncoder(logFile),
Filters: []log.Filter{
log.DefaultFilter,
func(lvl, threshold log.Level, data log.Data) log.Data {
// just for the example output
if data == nil {
return nil
}
data["@timestamp"] = nil
return data
},
},
})
logger.Log(log.InfoLevel, log.Data{
"foo": "bar",
"pi": 3.14,
})
// output for example
outFile, err := os.Open(logFile.Name())
if err != nil {
panic(err)
}
defer outFile.Close()
if _, err := io.Copy(os.Stdout, outFile); err != nil {
panic(err)
}
// Output:
// {"@timestamp":null,"@version":"1","foo":"bar","log_level":"Info","pi":3.14}
}
func ExampleWithLevels() {
// given that...
log.DefaultEncoder = json.NewEncoder(os.Stdout)
// Setting up a new LevelLogger
logger := log.WithLevels(log.New(log.Config{
Filters: []log.Filter{
log.DefaultFilter,
func(lvl, threshold log.Level, data log.Data) log.Data {
data["hey"] = &struct{ Ho bool }{true}
return data
},
func(lvl, threshold log.Level, data log.Data) log.Data {
if data == nil {
return nil
}
data["@timestamp"] = nil
return data
},
},
}))
// Calling,
logger.Fatal(log.Data{
"foo": "bar",
"pi": 3.14,
})
// should be the same as calling,
logger.Log(log.FatalLevel, log.Data{
"foo": "bar",
"pi": 3.14,
})
// and by default, nothing should be output for,
logger.Error(log.Data{
"foo": "bar",
"pi": 3.14,
})
// or,
logger.Info(log.Data{
"foo": "bar",
"pi": 3.14,
})
// or,
logger.Trace(log.Data{
"foo": "bar",
"pi": 3.14,
})
// Output:
// {"@timestamp":null,"@version":"1","foo":"bar","hey":{"Ho":true},"log_level":"Fatal","pi":3.14}
// {"@timestamp":null,"@version":"1","foo":"bar","hey":{"Ho":true},"log_level":"Fatal","pi":3.14}
}