Skip to content

Commit 2a528ab

Browse files
committed
WIP
1 parent 2f68964 commit 2a528ab

File tree

2 files changed

+43
-54
lines changed

2 files changed

+43
-54
lines changed

bench_test.go

Lines changed: 28 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -32,33 +32,49 @@ func BenchmarkDiscard(b *testing.B) {
3232
}
3333
}
3434

35+
func BenchmarkCallerFileHandler(b *testing.B) {
36+
lg := New()
37+
lg.SetHandler(CallerFileHandler(DiscardHandler()))
38+
39+
for i := 0; i < b.N; i++ {
40+
lg.Info("test message")
41+
}
42+
}
43+
44+
func BenchmarkCallerFuncHandler(b *testing.B) {
45+
lg := New()
46+
lg.SetHandler(CallerFuncHandler(DiscardHandler()))
47+
48+
for i := 0; i < b.N; i++ {
49+
lg.Info("test message")
50+
}
51+
}
52+
3553
func BenchmarkLogfmtNoCtx(b *testing.B) {
3654
r := Record{
37-
Time: time.Now(),
38-
Lvl: LvlInfo,
39-
Msg: "test message",
40-
Ctx: []interface{}{},
41-
KeyNames: DefaultRecordKeyNames,
55+
Time: time.Now(),
56+
Lvl: LvlInfo,
57+
Msg: "test message",
58+
Ctx: []interface{}{},
4259
}
4360

4461
logfmt := LogfmtFormat()
4562
for i := 0; i < b.N; i++ {
46-
logfmt.Format(r)
63+
logfmt.Format(&r)
4764
}
4865
}
4966

5067
func BenchmarkJsonNoCtx(b *testing.B) {
5168
r := Record{
52-
Time: time.Now(),
53-
Lvl: LvlInfo,
54-
Msg: "test message",
55-
Ctx: []interface{}{},
56-
KeyNames: DefaultRecordKeyNames,
69+
Time: time.Now(),
70+
Lvl: LvlInfo,
71+
Msg: "test message",
72+
Ctx: []interface{}{},
5773
}
5874

5975
jsonfmt := JsonFormat()
6076
for i := 0; i < b.N; i++ {
61-
jsonfmt.Format(r)
77+
jsonfmt.Format(&r)
6278
}
6379
}
6480

@@ -190,32 +206,3 @@ func BenchmarkLog15WithoutFields(b *testing.B) {
190206
}
191207
})
192208
}
193-
194-
func BenchmarkDefaultWarn(b *testing.B) {
195-
logger := New("source", "default", "partition", 3)
196-
logger.SetHandler(newHandler())
197-
b.ReportAllocs()
198-
b.ResetTimer()
199-
b.RunParallel(func(pb *testing.PB) {
200-
for pb.Next() {
201-
logger.Warn("warn message")
202-
}
203-
})
204-
}
205-
func BenchmarkDefaultDebug(b *testing.B) {
206-
logger := New("source", "default", "partition", 3)
207-
logger.SetHandler(newHandler())
208-
b.ReportAllocs()
209-
b.ResetTimer()
210-
b.RunParallel(func(pb *testing.PB) {
211-
for pb.Next() {
212-
logger.Debug("debug message")
213-
}
214-
})
215-
}
216-
func newHandler() Handler {
217-
lvl := LvlWarn
218-
logformat := LogfmtFormat()
219-
handler := StreamHandler(ioutil.Discard, logformat)
220-
return LvlFilterHandler(lvl, handler)
221-
}

logger.go

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"fmt"
55
"strings"
66
"time"
7+
8+
"github.com/go-stack/stack"
79
)
810

911
const timeKey = "t"
@@ -71,7 +73,8 @@ type Record struct {
7173
Lvl Lvl
7274
Msg string
7375
Ctx []interface{}
74-
KeyNames *RecordKeyNames
76+
Call stack.Call
77+
KeyNames RecordKeyNames
7578
}
7679

7780
// RecordKeyNames are the predefined names of the log props used by the Logger interface.
@@ -81,12 +84,6 @@ type RecordKeyNames struct {
8184
Lvl string
8285
}
8386

84-
var DefaultRecordKeyNames = &RecordKeyNames{
85-
Time: timeKey,
86-
Msg: msgKey,
87-
Lvl: lvlKey,
88-
}
89-
9087
// A Logger writes key/value pairs to a Handler
9188
type Logger interface {
9289
// New returns a new Logger that has this logger's context plus the given context
@@ -112,12 +109,17 @@ type logger struct {
112109
}
113110

114111
func (l *logger) write(msg string, lvl Lvl, ctx []interface{}) {
115-
l.h.Log(Record{
116-
Time: time.Now(),
117-
Lvl: lvl,
118-
Msg: msg,
119-
Ctx: newContext(l.ctx, ctx),
120-
KeyNames: DefaultRecordKeyNames,
112+
l.h.Log(&Record{
113+
Time: time.Now(),
114+
Lvl: lvl,
115+
Msg: msg,
116+
Ctx: newContext(l.ctx, ctx),
117+
Call: stack.Caller(2),
118+
KeyNames: RecordKeyNames{
119+
Time: timeKey,
120+
Msg: msgKey,
121+
Lvl: lvlKey,
122+
},
121123
})
122124
}
123125

0 commit comments

Comments
 (0)