-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathexample_test.go
83 lines (67 loc) · 1.85 KB
/
example_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
71
72
73
74
75
76
77
78
79
80
81
82
83
package logg_test
import (
"bytes"
"fmt"
"strings"
"time"
"github.com/bep/logg"
"github.com/bep/logg/handlers/text"
)
func Example() {
var buff bytes.Buffer
// Create a new logger.
l := logg.New(
logg.Options{
Level: logg.LevelInfo,
Handler: text.New(&buff, text.Options{Separator: " "}),
},
)
// Create a new log context.
infoLogger := l.WithLevel(logg.LevelInfo)
// Logg some user activity.
userLogger := infoLogger.WithField("user", "foo").WithField("id", "123")
userLogger.Log(logg.String("logged in"))
userLogger.WithField("file", "jokes.txt").Log(logg.String("uploaded"))
userLogger.WithField("file", "morejokes.txt").Log(logg.String("uploaded"))
fmt.Print(buff.String())
// Output:
// INFO logged in user=foo id=123
// INFO uploaded user=foo id=123 file=jokes.txt
// INFO uploaded user=foo id=123 file=morejokes.txt
}
func Example_lazy_evaluation() {
var buff bytes.Buffer
// Create a new logger.
l := logg.New(
logg.Options{
Level: logg.LevelError,
Handler: text.New(&buff, text.Options{Separator: "|"}),
},
)
errorLogger := l.WithLevel(logg.LevelError)
// Info is below the logger's level, so
// nothing will be printed.
infoLogger := l.WithLevel(logg.LevelInfo)
// Simulate a busy loop.
for i := 0; i < 999; i++ {
ctx := infoLogger.WithFields(
logg.NewFieldsFunc(
// This func will never be invoked with the current logger's level.
func() logg.Fields {
return logg.Fields{
{"field", strings.Repeat("x", 9999)},
}
}),
)
ctx.Log(logg.StringFunc(
// This func will never be invoked with the current logger's level.
func() string {
return "log message: " + strings.Repeat("x", 9999)
},
))
}
errorLogger.WithDuration(32 * time.Second).Log(logg.String("something took too long"))
fmt.Print(buff.String())
// Output:
// ERROR|something took too long|duration=32000
}