This repository has been archived by the owner on Nov 2, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuffer.go
94 lines (74 loc) · 2.08 KB
/
buffer.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
84
85
86
87
88
89
90
91
92
93
94
package log
import (
"fmt"
"sync"
)
func Buffer() *buffer {
return &buffer{}
}
type buffer struct {
mu sync.Mutex
entries []*Entry
}
var _ Handler = (*buffer)(nil)
var _ Log = (*buffer)(nil)
func (h *buffer) Log(entry *Entry) error {
h.entries = append(h.entries, entry)
return nil
}
// Entries returns a copy of the entries in the buffer
func (b *buffer) Entries() []*Entry {
b.mu.Lock()
defer b.mu.Unlock()
entries := make([]*Entry, len(b.entries))
copy(entries, b.entries)
return entries
}
func (b *buffer) Field(key string, value interface{}) Log {
return &sublogger{b, Fields{key: value}}
}
func (b *buffer) Fields(fields map[string]interface{}) Log {
return &sublogger{b, fields}
}
func (b *buffer) log(lvl Level, args []interface{}, fields Fields) error {
b.mu.Lock()
b.entries = append(b.entries, createEntry(lvl, sprint(args...), fields))
b.mu.Unlock()
return nil
}
func (b *buffer) logf(lvl Level, msg string, args []interface{}, fields Fields) error {
b.mu.Lock()
b.entries = append(b.entries, createEntry(lvl, fmt.Sprintf(msg, args...), fields))
b.mu.Unlock()
return nil
}
func (b *buffer) Debug(args ...interface{}) error {
return b.log(LevelDebug, args, nil)
}
func (b *buffer) Debugf(msg string, args ...interface{}) error {
return b.logf(LevelDebug, msg, args, nil)
}
func (b *buffer) Info(args ...interface{}) error {
return b.log(LevelInfo, args, nil)
}
func (b *buffer) Infof(msg string, args ...interface{}) error {
return b.logf(LevelInfo, msg, args, nil)
}
func (b *buffer) Notice(args ...interface{}) error {
return b.log(LevelNotice, args, nil)
}
func (b *buffer) Noticef(msg string, args ...interface{}) error {
return b.logf(LevelNotice, msg, args, nil)
}
func (b *buffer) Warn(args ...interface{}) error {
return b.log(LevelWarn, args, nil)
}
func (b *buffer) Warnf(msg string, args ...interface{}) error {
return b.logf(LevelWarn, msg, args, nil)
}
func (b *buffer) Error(args ...interface{}) error {
return b.log(LevelError, args, nil)
}
func (b *buffer) Errorf(msg string, args ...interface{}) error {
return b.logf(LevelError, msg, args, nil)
}